diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
index 25465c9..814e054 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
@@ -53,6 +53,11 @@
@TableField("DOOR_CODE")
private String doorCode;
/**
+ * 进出类型(1:进门;0:出门)
+ */
+ @TableField("INOUT_TYPE")
+ private String inoutType;
+ /**
* 安装日期
*/
@TableField("INSTALL_DATE")
@@ -77,6 +82,7 @@
", devName=" + devName +
", devIp=" + devIp +
", doorCode=" + doorCode +
+ ", inoutType=" + inoutType +
", installDate=" + installDate +
", alwaysOpen=" + alwaysOpen +
"}";
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
index 25465c9..814e054 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
@@ -53,6 +53,11 @@
@TableField("DOOR_CODE")
private String doorCode;
/**
+ * 进出类型(1:进门;0:出门)
+ */
+ @TableField("INOUT_TYPE")
+ private String inoutType;
+ /**
* 安装日期
*/
@TableField("INSTALL_DATE")
@@ -77,6 +82,7 @@
", devName=" + devName +
", devIp=" + devIp +
", doorCode=" + doorCode +
+ ", inoutType=" + inoutType +
", installDate=" + installDate +
", alwaysOpen=" + alwaysOpen +
"}";
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
deleted file mode 100644
index e8111a9..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.casic.missiles.modular.system.model;
-
-import java.io.Serializable;
-
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.baomidou.mybatisplus.activerecord.Model;
-import com.baomidou.mybatisplus.annotations.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- *
- *
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Data
-@TableName("bus_door")
-public class Door extends Model {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
- @TableId("ID")
- private Integer id;
- /**
- * 门编号
- */
- @TableField("DOOR_CODE")
- private String doorCode;
- /**
- * 门名称
- */
- @TableField("DOOR_NAME")
- private String doorName;
- /**
- * 描述
- */
- @TableField("DESCRIPTION")
- private String description;
-
- /**
- * 权属单位
- */
- @TableField("DEPTID")
- private Long deptid;
-
- @Override
- protected Serializable pkVal() {
- return this.id;
- }
-
- @Override
- public String toString() {
- return "Door{" +
- "id=" + id +
- ", doorCode=" + doorCode +
- ", doorName=" + doorName +
- ", description=" + description +
- "}";
- }
-}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
index 25465c9..814e054 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
@@ -53,6 +53,11 @@
@TableField("DOOR_CODE")
private String doorCode;
/**
+ * 进出类型(1:进门;0:出门)
+ */
+ @TableField("INOUT_TYPE")
+ private String inoutType;
+ /**
* 安装日期
*/
@TableField("INSTALL_DATE")
@@ -77,6 +82,7 @@
", devName=" + devName +
", devIp=" + devIp +
", doorCode=" + doorCode +
+ ", inoutType=" + inoutType +
", installDate=" + installDate +
", alwaysOpen=" + alwaysOpen +
"}";
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
deleted file mode 100644
index e8111a9..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.casic.missiles.modular.system.model;
-
-import java.io.Serializable;
-
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.baomidou.mybatisplus.activerecord.Model;
-import com.baomidou.mybatisplus.annotations.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- *
- *
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Data
-@TableName("bus_door")
-public class Door extends Model {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
- @TableId("ID")
- private Integer id;
- /**
- * 门编号
- */
- @TableField("DOOR_CODE")
- private String doorCode;
- /**
- * 门名称
- */
- @TableField("DOOR_NAME")
- private String doorName;
- /**
- * 描述
- */
- @TableField("DESCRIPTION")
- private String description;
-
- /**
- * 权属单位
- */
- @TableField("DEPTID")
- private Long deptid;
-
- @Override
- protected Serializable pkVal() {
- return this.id;
- }
-
- @Override
- public String toString() {
- return "Door{" +
- "id=" + id +
- ", doorCode=" + doorCode +
- ", doorName=" + doorName +
- ", description=" + description +
- "}";
- }
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
deleted file mode 100644
index 5d5f5a8..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.service;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.service.IService;
-
-/**
- *
- * 服务类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface IDoorService extends IService {
-
-}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
index 25465c9..814e054 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
@@ -53,6 +53,11 @@
@TableField("DOOR_CODE")
private String doorCode;
/**
+ * 进出类型(1:进门;0:出门)
+ */
+ @TableField("INOUT_TYPE")
+ private String inoutType;
+ /**
* 安装日期
*/
@TableField("INSTALL_DATE")
@@ -77,6 +82,7 @@
", devName=" + devName +
", devIp=" + devIp +
", doorCode=" + doorCode +
+ ", inoutType=" + inoutType +
", installDate=" + installDate +
", alwaysOpen=" + alwaysOpen +
"}";
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
deleted file mode 100644
index e8111a9..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.casic.missiles.modular.system.model;
-
-import java.io.Serializable;
-
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.baomidou.mybatisplus.activerecord.Model;
-import com.baomidou.mybatisplus.annotations.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- *
- *
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Data
-@TableName("bus_door")
-public class Door extends Model {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
- @TableId("ID")
- private Integer id;
- /**
- * 门编号
- */
- @TableField("DOOR_CODE")
- private String doorCode;
- /**
- * 门名称
- */
- @TableField("DOOR_NAME")
- private String doorName;
- /**
- * 描述
- */
- @TableField("DESCRIPTION")
- private String description;
-
- /**
- * 权属单位
- */
- @TableField("DEPTID")
- private Long deptid;
-
- @Override
- protected Serializable pkVal() {
- return this.id;
- }
-
- @Override
- public String toString() {
- return "Door{" +
- "id=" + id +
- ", doorCode=" + doorCode +
- ", doorName=" + doorName +
- ", description=" + description +
- "}";
- }
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
deleted file mode 100644
index 5d5f5a8..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.service;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.service.IService;
-
-/**
- *
- * 服务类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface IDoorService extends IService {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
index bba5295..5e52614 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
@@ -57,7 +57,9 @@
**/
private String generateDevCode(Device device){
DecimalFormat df = new DecimalFormat("00");
- String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+1);
+// Integer countNum = this.baseMapper.countDeviceByDoor(device.getDoorCode())+1;
+ String max = this.baseMapper.selectMaxByDoor(device.getDoorCode());
+ String count = df.format(extractDeviceCount(max)+1);
StringBuilder sb = new StringBuilder();
sb.append('D').append(device.getDoorCode()).append('N').append(count);
return sb.toString();
@@ -72,6 +74,14 @@
return devCode.substring(p1+1,p2);
}
+ /**
+ * 根据设备编号获取设备数(count)
+ */
+ private Integer extractDeviceCount(String devCode){
+ int p1 = devCode.indexOf('N');
+ return Integer.valueOf(devCode.substring(p1+1));
+ }
+
@Override
public boolean remoteOpen(Integer id) {
Device device = this.selectById(id);
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
index 25465c9..814e054 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
@@ -53,6 +53,11 @@
@TableField("DOOR_CODE")
private String doorCode;
/**
+ * 进出类型(1:进门;0:出门)
+ */
+ @TableField("INOUT_TYPE")
+ private String inoutType;
+ /**
* 安装日期
*/
@TableField("INSTALL_DATE")
@@ -77,6 +82,7 @@
", devName=" + devName +
", devIp=" + devIp +
", doorCode=" + doorCode +
+ ", inoutType=" + inoutType +
", installDate=" + installDate +
", alwaysOpen=" + alwaysOpen +
"}";
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
deleted file mode 100644
index e8111a9..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.casic.missiles.modular.system.model;
-
-import java.io.Serializable;
-
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.baomidou.mybatisplus.activerecord.Model;
-import com.baomidou.mybatisplus.annotations.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- *
- *
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Data
-@TableName("bus_door")
-public class Door extends Model {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
- @TableId("ID")
- private Integer id;
- /**
- * 门编号
- */
- @TableField("DOOR_CODE")
- private String doorCode;
- /**
- * 门名称
- */
- @TableField("DOOR_NAME")
- private String doorName;
- /**
- * 描述
- */
- @TableField("DESCRIPTION")
- private String description;
-
- /**
- * 权属单位
- */
- @TableField("DEPTID")
- private Long deptid;
-
- @Override
- protected Serializable pkVal() {
- return this.id;
- }
-
- @Override
- public String toString() {
- return "Door{" +
- "id=" + id +
- ", doorCode=" + doorCode +
- ", doorName=" + doorName +
- ", description=" + description +
- "}";
- }
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
deleted file mode 100644
index 5d5f5a8..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.service;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.service.IService;
-
-/**
- *
- * 服务类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface IDoorService extends IService {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
index bba5295..5e52614 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
@@ -57,7 +57,9 @@
**/
private String generateDevCode(Device device){
DecimalFormat df = new DecimalFormat("00");
- String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+1);
+// Integer countNum = this.baseMapper.countDeviceByDoor(device.getDoorCode())+1;
+ String max = this.baseMapper.selectMaxByDoor(device.getDoorCode());
+ String count = df.format(extractDeviceCount(max)+1);
StringBuilder sb = new StringBuilder();
sb.append('D').append(device.getDoorCode()).append('N').append(count);
return sb.toString();
@@ -72,6 +74,14 @@
return devCode.substring(p1+1,p2);
}
+ /**
+ * 根据设备编号获取设备数(count)
+ */
+ private Integer extractDeviceCount(String devCode){
+ int p1 = devCode.indexOf('N');
+ return Integer.valueOf(devCode.substring(p1+1));
+ }
+
@Override
public boolean remoteOpen(Integer id) {
Device device = this.selectById(id);
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
deleted file mode 100644
index 65c8222..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.casic.missiles.modular.system.service.impl;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.casic.missiles.modular.system.dao.DoorMapper;
-import com.casic.missiles.modular.system.service.IDoorService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- *
- * 服务实现类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Service
-public class DoorServiceImpl extends ServiceImpl implements IDoorService {
-
-}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
index 25465c9..814e054 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
@@ -53,6 +53,11 @@
@TableField("DOOR_CODE")
private String doorCode;
/**
+ * 进出类型(1:进门;0:出门)
+ */
+ @TableField("INOUT_TYPE")
+ private String inoutType;
+ /**
* 安装日期
*/
@TableField("INSTALL_DATE")
@@ -77,6 +82,7 @@
", devName=" + devName +
", devIp=" + devIp +
", doorCode=" + doorCode +
+ ", inoutType=" + inoutType +
", installDate=" + installDate +
", alwaysOpen=" + alwaysOpen +
"}";
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
deleted file mode 100644
index e8111a9..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.casic.missiles.modular.system.model;
-
-import java.io.Serializable;
-
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.baomidou.mybatisplus.activerecord.Model;
-import com.baomidou.mybatisplus.annotations.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- *
- *
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Data
-@TableName("bus_door")
-public class Door extends Model {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
- @TableId("ID")
- private Integer id;
- /**
- * 门编号
- */
- @TableField("DOOR_CODE")
- private String doorCode;
- /**
- * 门名称
- */
- @TableField("DOOR_NAME")
- private String doorName;
- /**
- * 描述
- */
- @TableField("DESCRIPTION")
- private String description;
-
- /**
- * 权属单位
- */
- @TableField("DEPTID")
- private Long deptid;
-
- @Override
- protected Serializable pkVal() {
- return this.id;
- }
-
- @Override
- public String toString() {
- return "Door{" +
- "id=" + id +
- ", doorCode=" + doorCode +
- ", doorName=" + doorName +
- ", description=" + description +
- "}";
- }
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
deleted file mode 100644
index 5d5f5a8..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.service;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.service.IService;
-
-/**
- *
- * 服务类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface IDoorService extends IService {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
index bba5295..5e52614 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
@@ -57,7 +57,9 @@
**/
private String generateDevCode(Device device){
DecimalFormat df = new DecimalFormat("00");
- String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+1);
+// Integer countNum = this.baseMapper.countDeviceByDoor(device.getDoorCode())+1;
+ String max = this.baseMapper.selectMaxByDoor(device.getDoorCode());
+ String count = df.format(extractDeviceCount(max)+1);
StringBuilder sb = new StringBuilder();
sb.append('D').append(device.getDoorCode()).append('N').append(count);
return sb.toString();
@@ -72,6 +74,14 @@
return devCode.substring(p1+1,p2);
}
+ /**
+ * 根据设备编号获取设备数(count)
+ */
+ private Integer extractDeviceCount(String devCode){
+ int p1 = devCode.indexOf('N');
+ return Integer.valueOf(devCode.substring(p1+1));
+ }
+
@Override
public boolean remoteOpen(Integer id) {
Device device = this.selectById(id);
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
deleted file mode 100644
index 65c8222..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.casic.missiles.modular.system.service.impl;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.casic.missiles.modular.system.dao.DoorMapper;
-import com.casic.missiles.modular.system.service.IDoorService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- *
- * 服务实现类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Service
-public class DoorServiceImpl extends ServiceImpl implements IDoorService {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java
index aa72c24..6366ab4 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java
@@ -17,10 +17,25 @@
@Override
protected void warpTheMap(Map map) {
+ // 权属单位
if(ToolUtil.isNotEmpty(map.get("deptid"))){
Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
String deptName = permissionService.getDeptName(deptid);
map.put("deptName",deptName);
}
+
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ if("1".equals(inoutType)){
+ map.put("inoutTypeName","进门");
+ }else if("0".equals(inoutType)){
+ map.put("inoutTypeName","出门");
+ }else{
+ map.put("inoutTypeName","");
+ }
+ }else{
+ map.put("inoutTypeName","");
+ }
}
}
diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml
index d83d7fb..92a10e1 100644
--- a/casic-iris-acs/pom.xml
+++ b/casic-iris-acs/pom.xml
@@ -49,7 +49,11 @@
casic-iris-support
${casic.version}
-
+
+ com.casic
+ casic-iris-device
+ ${casic.version}
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
new file mode 100644
index 0000000..84adc4e
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/constant/DoorConst.java
@@ -0,0 +1,8 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DoorConst {
+ /**
+ * 门添加日志Key
+ */
+ public static final String DOOR_ADD_LOG_KEY = "doorCode,doorName";
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
new file mode 100644
index 0000000..c7f1533
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
@@ -0,0 +1,141 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+//import com.casic.missiles.core.result.ResultData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.exception.GunsException;
+import com.casic.missiles.core.exception.GunsExceptionEnum;
+import com.casic.missiles.core.log.LogObjectHolder;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DoorDict;
+import com.casic.missiles.modular.system.warpper.DoorWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.service.IDoorService;
+
+import javax.validation.Valid;
+
+import static com.casic.missiles.modular.system.constant.DoorConst.DOOR_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-11-29 15:35:38
+ */
+@Controller
+@RequestMapping("/door")
+public class DoorController extends BaseController {
+ private static final Logger logger = LoggerFactory.getLogger(DoorController.class);
+
+ @Autowired
+ private IDoorService doorService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ /**
+ * 获取门禁列表,不分页
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = doorService.selectDataScope(dataScope);
+ new DoorWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取列表,分页
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(){
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ Page> page = new PageFactory>().defaultPage();
+ List> list = doorService.selectDataScopePage(dataScope,page);
+ new DoorWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 添加门禁
+ */
+ @RequestMapping(value = "/add",method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "添加门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object add(@Valid Door door, BindingResult result){
+ if (result.hasErrors()) {
+ return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage());
+ }
+ try {
+ doorService.insert(door);
+ }catch (Exception e){
+ logger.error("门禁添加失败", e);
+ e.printStackTrace();
+ return ResponseData.error("添加失败");
+ }
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改门禁
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改门禁", key = DOOR_ADD_LOG_KEY, dict = DoorDict.class)
+ public Object update(Door door){
+ if (ToolUtil.isEmpty(door.getId())) {
+ throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
+ }
+ Door oldDoor = this.doorService.selectById(door.getId());
+ LogObjectHolder.me().set(oldDoor);
+
+ doorService.updateById(door);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除门禁
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "删除门禁")
+ public Object delete(@RequestParam List ids){
+ try {
+ return doorService.deleteBatch(ids);
+ }catch (Exception e){
+ logger.error("门禁删除失败", e);
+ e.printStackTrace();
+ return ResponseData.error("删除失败");
+ }
+ }
+
+ /**
+ * 判断该门禁是否有出门设备
+ */
+ @RequestMapping(value = "/existOut")
+ @ResponseBody
+ public Object existOut(Integer id){
+ try {
+ return ResponseData.success(doorService.existOut(id));
+ }catch (Exception e){
+ return ResponseData.error("请求失败");
+ }
+ }
+}
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
new file mode 100644
index 0000000..48ee26c
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java
@@ -0,0 +1,89 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+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.modular.system.warpper.DeviceWarpper;
+import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-02 15:00:54
+ */
+@Controller
+@RequestMapping("/records")
+public class RecognitionRecordsController extends BaseController {
+
+ @Autowired
+ private IRecognitionRecordsService recordsService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ //TODO 人员类型改为字典值?
+
+ /**
+ * 员工数据查询
+ */
+ @RequestMapping(value = "/listStaff")
+ @ResponseBody
+ public Object listStaff(String keyword,Long personDeptId,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 访客数据查询
+ */
+ @RequestMapping(value = "/listVisitor")
+ @ResponseBody
+ public Object listVisitor(String keyword,String doorName,String devCode,String beginTime,String endTime){
+ Page> page = new PageFactory>().defaultPage();
+ DataScope dataScope = permissionService.getCurrUserDataScope();
+ List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorName,devCode,beginTime,endTime);
+ new RecognitionRecordsWarpper(list).warp();
+ page.setRecords(list);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 统计各部门进出记录
+ */
+ @RequestMapping(value = "/statisticByDept")
+ @ResponseBody
+ public Object statisticByDept(String doorName,String beginTime,String endTime,String inoutType){
+ List> res = recordsService.statisticByDept(doorName, beginTime, endTime, inoutType);
+ return ResponseData.success(res);
+ }
+
+ /**
+ * 根据部门和人统计进出记录
+ */
+ @RequestMapping(value = "/statisticByPerson")
+ @ResponseBody
+ public Object statisticByPerson(String doorName,String beginTime,String endTime, Long deptId, Long personId){
+ List> res = recordsService.statisticByPerson(doorName, beginTime, endTime, deptId, personId);
+ return ResponseData.success(res);
+ }
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
new file mode 100644
index 0000000..b7884b4
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/StrategyController.java
@@ -0,0 +1,110 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.warpper.StrategyWarpper;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import java.util.List;
+import java.util.Map;
+
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.service.IStrategyService;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2019-12-03 11:15:35
+ */
+@Controller
+@RequestMapping("/strategy")
+public class StrategyController extends BaseController {
+
+
+ @Autowired
+ private IStrategyService strategyService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list() {
+ List> list = strategyService.selectMaps(null);
+ new StrategyWarpper(list).warp();
+ return ResponseData.success(list);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage() {
+ Page> page = new PageFactory>().defaultPage();
+ page = strategyService.selectMapsPage(page,null);
+ new StrategyWarpper(page.getRecords()).warp();
+ return ResponseData.success(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Strategy strategy) {
+ strategyService.insert(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam Integer strategyId) {
+ strategyService.deleteById(strategyId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("strategyIds") List strategyIds) {
+ strategyService.deleteBatchIds(strategyIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Strategy strategy) {
+ strategyService.updateById(strategy);
+ return ResponseData.success();
+ }
+
+ /**
+ * 详情
+ */
+ @RequestMapping(value = "/detail/{strategyId}")
+ @ResponseBody
+ public Object detail(@PathVariable("strategyId") String strategyId) {
+ EntityWrapper query = new EntityWrapper<>();
+ query.eq("ID",strategyId);
+ Map strategy = strategyService.selectMap(query);
+ new StrategyWarpper(strategy).warp();
+ return ResponseData.success(strategy);
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
new file mode 100644
index 0000000..d128811
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface DoorMapper extends BaseMapper {
+ List> selectDataScope(@Param("datascope")DataScope dataScope);
+ List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
+ Door selectByName(@Param("doorName")String doorName);
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
new file mode 100644
index 0000000..a4445a1
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/RecognitionRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface RecognitionRecordsMapper extends BaseMapper {
+ List> selectStaffDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("personDeptId")Long personDeptId, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+ List> selectVisitorDataScopePage(@Param("dataScope")DataScope dataScope, @Param("page")Page page, @Param("keyword")String keyword, @Param("doorName")String doorName, @Param("devCode")String devCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime);
+
+ List> statisticByDept(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("inoutType") String inoutType);
+ Integer statisticByPerson(@Param("doorName") String doorName,@Param("beginTime") String beginTime,@Param("endTime") String endTime,@Param("deptId")Long deptId,@Param("personId")Long personId,@Param("inoutType") String inoutType);
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
new file mode 100644
index 0000000..b349fc5
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/StrategyMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface StrategyMapper extends BaseMapper {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
new file mode 100644
index 0000000..0ee8aed
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
new file mode 100644
index 0000000..729bbde
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, STAFF_ID AS staffId, DATETIME AS datetime, DEV_CODE AS devCode
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
new file mode 100644
index 0000000..5ec4d05
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/StrategyMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, NAME AS name, TYPE AS type, BEGIN_DATETIME AS beginDatetime, END_DATETIME AS endDatetime, WEEK AS week, PERIOD AS period, BEGIN_TIME AS beginTime, END_TIME AS endTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
new file mode 100644
index 0000000..27150c7
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dict/DoorDict.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.system.dict;
+
+import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap;
+
+public class DoorDict extends AbstractDictMap {
+
+ @Override
+ public void init() {
+ put("doorCode","门禁编号");
+ put("doorName","门禁名称");
+ }
+
+ @Override
+ protected void initBeWrapped() {}
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
new file mode 100644
index 0000000..e8111a9
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Door.java
@@ -0,0 +1,68 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Data
+@TableName("bus_door")
+public class Door extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 门编号
+ */
+ @TableField("DOOR_CODE")
+ private String doorCode;
+ /**
+ * 门名称
+ */
+ @TableField("DOOR_NAME")
+ private String doorName;
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ /**
+ * 权属单位
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "Door{" +
+ "id=" + id +
+ ", doorCode=" + doorCode +
+ ", doorName=" + doorName +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
new file mode 100644
index 0000000..29dce4d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/RecognitionRecords.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Data
+@TableName("recognition_records")
+public class RecognitionRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 对应staff表主键
+ */
+ @TableField("STAFF_ID")
+ private Long staffId;
+ /**
+ * 识别时间
+ */
+ @TableField("DATETIME")
+ private Date datetime;
+ /**
+ * 设备业务编码
+ */
+ @TableField("DEV_CODE")
+ private String devCode;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "RecognitionRecords{" +
+ "id=" + id +
+ ", staffId=" + staffId +
+ ", datetime=" + datetime +
+ ", devCode=" + devCode +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
new file mode 100644
index 0000000..25c0c87
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Strategy.java
@@ -0,0 +1,106 @@
+package com.casic.missiles.modular.system.model;
+
+import java.io.Serializable;
+
+import java.sql.Time;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Data
+@TableName("acs_strategy")
+public class Strategy extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId("ID")
+ private Integer id;
+ /**
+ * 策略名称
+ */
+ @TableField("NAME")
+ private String name;
+ /**
+ * 策略类型
+ */
+ @TableField("TYPE")
+ private String type;
+ /**
+ * 生效日期
+ */
+ @TableField("BEGIN_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDatetime;
+ /**
+ * 失效日期
+ */
+ @TableField("END_DATETIME")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDatetime;
+ /**
+ * 星期
+ */
+ @TableField("WEEK")
+ private String week;
+ /**
+ * 策略周期
+ */
+ @TableField("PERIOD")
+ private String period;
+ /**
+ * 生效时间
+ */
+ @TableField("BEGIN_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time beginTime;
+ /**
+ * 失效时间
+ */
+ @TableField("END_TIME")
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ private Time endTime;
+
+ /**
+ * 描述
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+ @Override
+ public String toString() {
+ return "StrategyWarpper{" +
+ "id=" + id +
+ ", name=" + name +
+ ", type=" + type +
+ ", beginDatetime=" + beginDatetime +
+ ", endDatetime=" + endDatetime +
+ ", week=" + week +
+ ", period=" + period +
+ ", beginTime=" + beginTime +
+ ", endTime=" + endTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
new file mode 100644
index 0000000..d8764da
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Door;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+public interface IDoorService extends IService {
+ List> selectDataScope(DataScope dataScope);
+ List> selectDataScopePage(DataScope dataScope, Page page);
+ Object deleteBatch(List ids);
+ Boolean existOut(Integer id);
+ Door selectByName(String doorName);
+}
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
new file mode 100644
index 0000000..9336707
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+public interface IRecognitionRecordsService extends IService {
+ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime);
+ List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorName, String devCode, String beginTime, String endTime);
+
+ List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType);
+ List> statisticByPerson(String doorName,String beginTime, String endTime,Long deptId, Long personId);
+
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
new file mode 100644
index 0000000..b239203
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IStrategyService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+public interface IStrategyService extends IService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
new file mode 100644
index 0000000..d7b6526
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.system.model.Door;
+import com.casic.missiles.modular.system.dao.DoorMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-11-29
+ */
+@Service
+public class DoorServiceImpl extends ServiceImpl implements IDoorService {
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public List> selectDataScope(DataScope dataScope) {
+ return this.baseMapper.selectDataScope(dataScope);
+ }
+
+ @Override
+ public List> selectDataScopePage(DataScope dataScope, Page page) {
+ return this.baseMapper.selectDataScopePage(dataScope,page);
+ }
+
+ @Override
+ public Object deleteBatch(List ids) {
+ List ref = new ArrayList<>(); // 存储不能删除的门禁编号
+ for (Integer id : ids) {
+ Door door = this.selectById(id);
+ Integer count = deviceMapper.countDeviceByDoor(door.getDoorCode());
+ if(count > 0){
+ ref.add(door.getDoorCode());
+ }else{
+ this.deleteById(id); // 没有关联设备的门,直接删除
+ }
+ }
+ if(ref.size()>0){
+ String codes = String.join(",",ref);
+ return ResponseData.error(codes + ",以上门禁存在绑定设备,请先解绑后再删除!");
+ }else{
+ return ResponseData.success();
+ }
+ }
+
+ @Override
+ public Boolean existOut(Integer id) {
+ Door door = this.selectById(id);
+ List> list = deviceMapper.selectOutDeviceByDoor(door.getDoorCode());
+ if(list.size()>0){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ @Override
+ public Door selectByName(String doorName) {
+ return this.baseMapper.selectByName(doorName);
+ }
+}
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
new file mode 100644
index 0000000..860e20d
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java
@@ -0,0 +1,83 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.RecognitionRecords;
+import com.casic.missiles.modular.system.dao.RecognitionRecordsMapper;
+import com.casic.missiles.modular.system.service.IDoorService;
+import com.casic.missiles.modular.system.service.IRecognitionRecordsService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.sun.javafx.collections.MappingChange;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-02
+ */
+@Service
+public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IDoorService doorService;
+
+ @Override
+ public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorName, String devCode, String beginTime, String endTime) {
+ List> list = this.baseMapper.selectStaffDataScopePage(dataScope, page, keyword, personDeptId, doorName, devCode, 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 doorName, String devCode, String beginTime, String endTime) {
+ return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorName, devCode, beginTime, endTime);
+ }
+
+ @Override
+ public List> statisticByDept(String doorName,String beginTime, String endTime,String inoutType){
+ List> list = this.baseMapper.statisticByDept(doorName, beginTime, endTime, inoutType);
+ for (Map res : list) {
+ Long deptid = Long.valueOf(String.valueOf(res.get("deptId")));
+ String deptName = permissionService.getDeptName(deptid);
+ res.put("deptName",deptName);
+ }
+ return list;
+ }
+
+ @Override
+ public List> statisticByPerson(String doorName, String beginTime, String endTime, Long deptId, Long personId) {
+ List dictList = permissionService.findInDictByCode("inoutType");
+ List> mapList = new ArrayList<>();
+ Boolean existOut = doorService.existOut(doorService.selectByName(doorName).getId());
+ for (Dict dict : dictList) {
+ // 如果门禁不存在出门设备,不统计“出门”
+ if(!existOut){
+ if("out".equals(dict.getTips())){
+ continue;
+ }
+ }
+ Map map = new HashMap<>();
+ map.put("inoutType",dict.getName());
+ map.put("num",this.baseMapper.statisticByPerson(doorName,beginTime,endTime,deptId,personId,dict.getCode()));
+ mapList.add(map);
+ }
+ return mapList;
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..4e33670
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.Strategy;
+import com.casic.missiles.modular.system.dao.StrategyMapper;
+import com.casic.missiles.modular.system.service.IStrategyService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 123
+ * @since 2019-12-03
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl implements IStrategyService {
+
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
new file mode 100644
index 0000000..98fbebf
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/DoorWarpper.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.util.Map;
+
+public class DoorWarpper extends BaseControllerWarpper {
+
+ public DoorWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ if(ToolUtil.isNotEmpty(map.get("deptid"))){
+ Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
+ String deptName = permissionService.getDeptName(deptid);
+ map.put("deptName",deptName);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
new file mode 100644
index 0000000..533a6a3
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/RecognitionRecordsWarpper.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+public class RecognitionRecordsWarpper extends BaseControllerWarpper {
+
+ public RecognitionRecordsWarpper(Object obj) {
+ super(obj);
+ }
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ map.put("inoutTypeName",permissionService.getDictNameByCode("inoutType",inoutType));
+ }else{
+ map.put("inoutTypeName","");
+ }
+
+ //将时间字段转成string,以保留时分秒
+ if (!ToolUtil.isEmpty(map.get("dateTime"))) {
+ String createTime = formatter.format(map.get("dateTime"));
+ map.put("dateTime",createTime);
+ }
+ }
+}
diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
new file mode 100644
index 0000000..a0dbe72
--- /dev/null
+++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/warpper/StrategyWarpper.java
@@ -0,0 +1,61 @@
+package com.casic.missiles.modular.system.warpper;
+
+import com.casic.missiles.core.base.warpper.BaseControllerWarpper;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.core.util.ToolUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class StrategyWarpper extends BaseControllerWarpper {
+ public StrategyWarpper(Object obj) {
+ super(obj);
+ }
+ SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
+
+ ICommonPermissionService permissionService = SpringContextHolder.getBean(ICommonPermissionService.class);
+
+ @Override
+ protected void warpTheMap(Map map) {
+ // 时间格式化
+ if(ToolUtil.isNotEmpty(map.get("beginDatetime"))){
+ String beginDatetime = formatter1.format(map.get("beginDatetime"));
+ map.put("beginDatetime",beginDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endDatetime"))){
+ String endDatetime = formatter1.format(map.get("endDatetime"));
+ map.put("endDatetime",endDatetime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("beginTime"))){
+ String beginTime = formatter2.format(map.get("beginTime"));
+ map.put("beginTime",beginTime);
+ }
+ if(ToolUtil.isNotEmpty(map.get("endTime"))){
+ String endTime = formatter2.format(map.get("endTime"));
+ map.put("endTime",endTime);
+ }
+
+ // 设字典值
+ if(ToolUtil.isNotEmpty(map.get("type"))){
+ String type = map.get("type").toString();
+ map.put("typeName",permissionService.getDictNameByCode("strategyType",type));
+ }
+ if(ToolUtil.isNotEmpty(map.get("period"))){
+ String period = map.get("period").toString();
+ map.put("periodName",permissionService.getDictNameByCode("strategyPeriod",period));
+ }
+ if(ToolUtil.isNotEmpty(map.get("week"))){
+ String weekStr = map.get("week").toString();
+ List weekNameList = new ArrayList<>();
+ for(String week: weekStr.split(",")){
+ String weekName = permissionService.getDictNameByCode("week",week);
+ weekNameList.add(weekName);
+ }
+ map.put("weekName",String.join(",",weekNameList));
+ }
+ }
+}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
index a3dc747..8ff0af3 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -4,7 +4,7 @@
/**
* 设备添加日志Key
*/
- public static final String DEVICE_ADD_LOG_KEY = "devCode,devName,devIp,position";
+ public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp";
/**
* 远程开门指令
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
index 1b2defd..dbbabef 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java
@@ -129,16 +129,16 @@
/**
* 常开常闭
- * @param devId
+ * @param id
* @param alwaysOpen 1:常开 0:常闭
*/
@RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST)
@ResponseBody
- public Object alwaysOpen(Integer devId, String alwaysOpen){
- if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) {
+ public Object alwaysOpen(Integer id, String alwaysOpen){
+ if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) {
throw new GunsException(GunsExceptionEnum.REQUEST_NULL);
}
- if(deviceService.alwaysOpen(devId,alwaysOpen)){
+ if(deviceService.alwaysOpen(id,alwaysOpen)){
return ResponseData.success();
}else {
return ResponseData.error("请求失败");
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
deleted file mode 100644
index 1b44436..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.casic.missiles.modular.system.controller;
-
-import com.casic.missiles.core.base.controller.BaseController;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.casic.missiles.modular.system.service.IDoorService;
-
-/**
- * 控制器
- *
- * @author dev
- * @Date 2019-11-29 15:35:38
- */
-@Controller
-@RequestMapping("/door")
-public class DoorController extends BaseController {
-
-
- @Autowired
- private IDoorService doorService;
-
-
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
index bd35607..16ed91a 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java
@@ -20,4 +20,6 @@
public interface DeviceMapper extends BaseMapper {
List> selectDataScopePage(@Param("datascope")DataScope dataScope, @Param("page")Page page);
Integer countDeviceByDoor(@Param("doorCode")String doorCode);
+ String selectMaxByDoor(@Param("doorCode")String doorCode);
+ List> selectOutDeviceByDoor(@Param("doorCode")String doorCode);
}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
deleted file mode 100644
index 53fbc03..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.dao;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface DoorMapper extends BaseMapper {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
index 50264f3..d6548eb 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml
@@ -9,13 +9,14 @@
+
- ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+ ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INOUT_TYPE AS inoutType, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen
+
+
+
+
+
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
deleted file mode 100644
index 6409896..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid
-
-
-
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
index 3848f8f..8a72bc0 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java
@@ -6,10 +6,9 @@
@Override
public void init() {
- put("devCode","设备编号");
+ put("id","设备ID");
put("devName","设备名称");
put("devIp","设备IP");
- put("position","安装位置");
}
@Override
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
index 25465c9..814e054 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java
@@ -53,6 +53,11 @@
@TableField("DOOR_CODE")
private String doorCode;
/**
+ * 进出类型(1:进门;0:出门)
+ */
+ @TableField("INOUT_TYPE")
+ private String inoutType;
+ /**
* 安装日期
*/
@TableField("INSTALL_DATE")
@@ -77,6 +82,7 @@
", devName=" + devName +
", devIp=" + devIp +
", doorCode=" + doorCode +
+ ", inoutType=" + inoutType +
", installDate=" + installDate +
", alwaysOpen=" + alwaysOpen +
"}";
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
deleted file mode 100644
index e8111a9..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.casic.missiles.modular.system.model;
-
-import java.io.Serializable;
-
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.annotations.TableField;
-import com.baomidou.mybatisplus.activerecord.Model;
-import com.baomidou.mybatisplus.annotations.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- *
- *
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Data
-@TableName("bus_door")
-public class Door extends Model {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 主键ID
- */
- @TableId("ID")
- private Integer id;
- /**
- * 门编号
- */
- @TableField("DOOR_CODE")
- private String doorCode;
- /**
- * 门名称
- */
- @TableField("DOOR_NAME")
- private String doorName;
- /**
- * 描述
- */
- @TableField("DESCRIPTION")
- private String description;
-
- /**
- * 权属单位
- */
- @TableField("DEPTID")
- private Long deptid;
-
- @Override
- protected Serializable pkVal() {
- return this.id;
- }
-
- @Override
- public String toString() {
- return "Door{" +
- "id=" + id +
- ", doorCode=" + doorCode +
- ", doorName=" + doorName +
- ", description=" + description +
- "}";
- }
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
deleted file mode 100644
index 5d5f5a8..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.casic.missiles.modular.system.service;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.baomidou.mybatisplus.service.IService;
-
-/**
- *
- * 服务类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-public interface IDoorService extends IService {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
index bba5295..5e52614 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java
@@ -57,7 +57,9 @@
**/
private String generateDevCode(Device device){
DecimalFormat df = new DecimalFormat("00");
- String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+1);
+// Integer countNum = this.baseMapper.countDeviceByDoor(device.getDoorCode())+1;
+ String max = this.baseMapper.selectMaxByDoor(device.getDoorCode());
+ String count = df.format(extractDeviceCount(max)+1);
StringBuilder sb = new StringBuilder();
sb.append('D').append(device.getDoorCode()).append('N').append(count);
return sb.toString();
@@ -72,6 +74,14 @@
return devCode.substring(p1+1,p2);
}
+ /**
+ * 根据设备编号获取设备数(count)
+ */
+ private Integer extractDeviceCount(String devCode){
+ int p1 = devCode.indexOf('N');
+ return Integer.valueOf(devCode.substring(p1+1));
+ }
+
@Override
public boolean remoteOpen(Integer id) {
Device device = this.selectById(id);
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
deleted file mode 100644
index 65c8222..0000000
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.casic.missiles.modular.system.service.impl;
-
-import com.casic.missiles.modular.system.model.Door;
-import com.casic.missiles.modular.system.dao.DoorMapper;
-import com.casic.missiles.modular.system.service.IDoorService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- *
- * 服务实现类
- *
- *
- * @author 123
- * @since 2019-11-29
- */
-@Service
-public class DoorServiceImpl extends ServiceImpl implements IDoorService {
-
-}
diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java
index aa72c24..6366ab4 100644
--- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java
+++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java
@@ -17,10 +17,25 @@
@Override
protected void warpTheMap(Map map) {
+ // 权属单位
if(ToolUtil.isNotEmpty(map.get("deptid"))){
Long deptid = Long.valueOf(String.valueOf(map.get("deptid")));
String deptName = permissionService.getDeptName(deptid);
map.put("deptName",deptName);
}
+
+ // 进出类型
+ if(ToolUtil.isNotEmpty(map.get("inoutType"))){
+ String inoutType = String.valueOf(map.get("inoutType"));
+ if("1".equals(inoutType)){
+ map.put("inoutTypeName","进门");
+ }else if("0".equals(inoutType)){
+ map.put("inoutTypeName","出门");
+ }else{
+ map.put("inoutTypeName","");
+ }
+ }else{
+ map.put("inoutTypeName","");
+ }
}
}
diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml
index 96ba4db..251a8df 100644
--- a/casic-web/src/main/resources/config/application-dev.yml
+++ b/casic-web/src/main/resources/config/application-dev.yml
@@ -3,7 +3,7 @@
################### spring配置 ###################
spring:
datasource:
- url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
+ url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
username: root
password: root
initial-size: 2