diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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/pom.xml b/casic-iris-acs/pom.xml index 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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/pom.xml b/casic-iris-acs/pom.xml index 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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 06024bf..58dc25b 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -43,7 +43,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",""); + } } }