diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} 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 new file mode 100644 index 0000000..6366ab4 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java @@ -0,0 +1,41 @@ +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 DeviceWarpper extends BaseControllerWarpper { + + public DeviceWarpper(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); + } + + // 进出类型 + if(ToolUtil.isNotEmpty(map.get("inoutType"))){ + String inoutType = String.valueOf(map.get("inoutType")); + if("1".equals(inoutType)){ + map.put("inoutTypeName","进门"); + }else if("0".equals(inoutType)){ + map.put("inoutTypeName","出门"); + }else{ + map.put("inoutTypeName",""); + } + }else{ + map.put("inoutTypeName",""); + } + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} 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 new file mode 100644 index 0000000..6366ab4 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java @@ -0,0 +1,41 @@ +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 DeviceWarpper extends BaseControllerWarpper { + + public DeviceWarpper(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); + } + + // 进出类型 + if(ToolUtil.isNotEmpty(map.get("inoutType"))){ + String inoutType = String.valueOf(map.get("inoutType")); + if("1".equals(inoutType)){ + map.put("inoutTypeName","进门"); + }else if("0".equals(inoutType)){ + map.put("inoutTypeName","出门"); + }else{ + map.put("inoutTypeName",""); + } + }else{ + map.put("inoutTypeName",""); + } + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 9dbe1fb..343547c 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -76,7 +76,11 @@ casic-admin-area ${casic.version} - + + com.casic + casic-metadata-core + ${casic.version} + com.casic diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} 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 new file mode 100644 index 0000000..6366ab4 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java @@ -0,0 +1,41 @@ +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 DeviceWarpper extends BaseControllerWarpper { + + public DeviceWarpper(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); + } + + // 进出类型 + if(ToolUtil.isNotEmpty(map.get("inoutType"))){ + String inoutType = String.valueOf(map.get("inoutType")); + if("1".equals(inoutType)){ + map.put("inoutTypeName","进门"); + }else if("0".equals(inoutType)){ + map.put("inoutTypeName","出门"); + }else{ + map.put("inoutTypeName",""); + } + }else{ + map.put("inoutTypeName",""); + } + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 9dbe1fb..343547c 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -76,7 +76,11 @@ casic-admin-area ${casic.version} - + + com.casic + casic-metadata-core + ${casic.version} + com.casic diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 8a66b1d..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -3,6 +3,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} 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 new file mode 100644 index 0000000..6366ab4 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java @@ -0,0 +1,41 @@ +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 DeviceWarpper extends BaseControllerWarpper { + + public DeviceWarpper(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); + } + + // 进出类型 + if(ToolUtil.isNotEmpty(map.get("inoutType"))){ + String inoutType = String.valueOf(map.get("inoutType")); + if("1".equals(inoutType)){ + map.put("inoutTypeName","进门"); + }else if("0".equals(inoutType)){ + map.put("inoutTypeName","出门"); + }else{ + map.put("inoutTypeName",""); + } + }else{ + map.put("inoutTypeName",""); + } + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 9dbe1fb..343547c 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -76,7 +76,11 @@ casic-admin-area ${casic.version} - + + com.casic + casic-metadata-core + ${casic.version} + com.casic diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 8a66b1d..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -3,6 +3,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java new file mode 100644 index 0000000..274647f --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -0,0 +1,44 @@ +package com.casic.missiles.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 仅为mock登录使用 + */ +@Controller +@RequestMapping("/test") +public class TableTestController extends BaseController { + /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + + @Autowired + private IMetadataCommonService metadataCommonService; + + *//** + * 获取mockToken + *//* + @PostMapping("/add") + @ResponseBody + public Object add(@RequestParam Map map) { + map.put("id", IdWorker.getId()); + map.put("targetId", 123L); + metadataCommonService.insertMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + + @PostMapping("/update") + @ResponseBody + public Object update(@RequestParam Map map) { + metadataCommonService.updateMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + @PostMapping("/detail") + @ResponseBody + public Object detail(Long id) { + return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); + }*/ + +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} 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 new file mode 100644 index 0000000..6366ab4 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java @@ -0,0 +1,41 @@ +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 DeviceWarpper extends BaseControllerWarpper { + + public DeviceWarpper(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); + } + + // 进出类型 + if(ToolUtil.isNotEmpty(map.get("inoutType"))){ + String inoutType = String.valueOf(map.get("inoutType")); + if("1".equals(inoutType)){ + map.put("inoutTypeName","进门"); + }else if("0".equals(inoutType)){ + map.put("inoutTypeName","出门"); + }else{ + map.put("inoutTypeName",""); + } + }else{ + map.put("inoutTypeName",""); + } + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 9dbe1fb..343547c 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -76,7 +76,11 @@ casic-admin-area ${casic.version} - + + com.casic + casic-metadata-core + ${casic.version} + com.casic diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 8a66b1d..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -3,6 +3,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java new file mode 100644 index 0000000..274647f --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -0,0 +1,44 @@ +package com.casic.missiles.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 仅为mock登录使用 + */ +@Controller +@RequestMapping("/test") +public class TableTestController extends BaseController { + /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + + @Autowired + private IMetadataCommonService metadataCommonService; + + *//** + * 获取mockToken + *//* + @PostMapping("/add") + @ResponseBody + public Object add(@RequestParam Map map) { + map.put("id", IdWorker.getId()); + map.put("targetId", 123L); + metadataCommonService.insertMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + + @PostMapping("/update") + @ResponseBody + public Object update(@RequestParam Map map) { + metadataCommonService.updateMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + @PostMapping("/detail") + @ResponseBody + public Object detail(Long id) { + return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); + }*/ + +} diff --git a/casic-web/src/main/resources/application.yml b/casic-web/src/main/resources/application.yml index 70cc33b..dd644ca 100644 --- a/casic-web/src/main/resources/application.yml +++ b/casic-web/src/main/resources/application.yml @@ -15,4 +15,7 @@ casic: kaptcha-open: true #是否开启登录时验证码 (true/false) file-upload-path: d:/tmp #文件上传目录(不配置的话为java.io.tmpdir目录) - nologin-urls: /user/login,/kaptcha,/config/baseConfig \ No newline at end of file + nologin-urls: /user/login,/kaptcha,/config/baseConfig +mybatis-plus: + global-config: + sql-injector: com.casic.missiles.modular.metadata.inject.MetaSqlInject \ No newline at end of file diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} 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 new file mode 100644 index 0000000..6366ab4 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java @@ -0,0 +1,41 @@ +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 DeviceWarpper extends BaseControllerWarpper { + + public DeviceWarpper(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); + } + + // 进出类型 + if(ToolUtil.isNotEmpty(map.get("inoutType"))){ + String inoutType = String.valueOf(map.get("inoutType")); + if("1".equals(inoutType)){ + map.put("inoutTypeName","进门"); + }else if("0".equals(inoutType)){ + map.put("inoutTypeName","出门"); + }else{ + map.put("inoutTypeName",""); + } + }else{ + map.put("inoutTypeName",""); + } + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 9dbe1fb..343547c 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -76,7 +76,11 @@ casic-admin-area ${casic.version} - + + com.casic + casic-metadata-core + ${casic.version} + com.casic diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 8a66b1d..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -3,6 +3,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java new file mode 100644 index 0000000..274647f --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -0,0 +1,44 @@ +package com.casic.missiles.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 仅为mock登录使用 + */ +@Controller +@RequestMapping("/test") +public class TableTestController extends BaseController { + /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + + @Autowired + private IMetadataCommonService metadataCommonService; + + *//** + * 获取mockToken + *//* + @PostMapping("/add") + @ResponseBody + public Object add(@RequestParam Map map) { + map.put("id", IdWorker.getId()); + map.put("targetId", 123L); + metadataCommonService.insertMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + + @PostMapping("/update") + @ResponseBody + public Object update(@RequestParam Map map) { + metadataCommonService.updateMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + @PostMapping("/detail") + @ResponseBody + public Object detail(Long id) { + return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); + }*/ + +} diff --git a/casic-web/src/main/resources/application.yml b/casic-web/src/main/resources/application.yml index 70cc33b..dd644ca 100644 --- a/casic-web/src/main/resources/application.yml +++ b/casic-web/src/main/resources/application.yml @@ -15,4 +15,7 @@ casic: kaptcha-open: true #是否开启登录时验证码 (true/false) file-upload-path: d:/tmp #文件上传目录(不配置的话为java.io.tmpdir目录) - nologin-urls: /user/login,/kaptcha,/config/baseConfig \ No newline at end of file + nologin-urls: /user/login,/kaptcha,/config/baseConfig +mybatis-plus: + global-config: + sql-injector: com.casic.missiles.modular.metadata.inject.MetaSqlInject \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 2c78b0c..251a8df 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -18,4 +18,5 @@ level.com.casic: debug path: logs/ file: missiles.log - +iris: + socket-port: 8000 diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 06024bf..92a10e1 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -29,6 +29,12 @@ com.casic + casic-metadata-core + ${casic.version} + + + + com.casic casic-export-support 1.0.0-SNAPSHOT @@ -43,7 +49,11 @@ casic-iris-support ${casic.version} - + + com.casic + casic-iris-device + ${casic.version} + org.springframework.boot spring-boot-starter-aop @@ -76,6 +86,7 @@ commons-lang3 + 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/PersonController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java new file mode 100644 index 0000000..882434e --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/PersonController.java @@ -0,0 +1,98 @@ +package com.casic.missiles.modular.system.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IPersonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 人员管理控制器 + * + * @author dev + * @Date 2019-12-03 17:45:18 + */ +@RestController +@RequestMapping("/person") +public class PersonController extends BaseController { + + + @Autowired + private IPersonService personService; + + + /** + * 获取人员管理列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return personService.selectList(null); + } + + /** + * 获取人员管理分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = personService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增人员管理 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(Person person) { + personService.insert(person); + return ResponseData.success(); + } + + /** + * 删除人员管理 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String personId) { + personService.deleteById(personId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("personIds") List personIds) { + personService.deleteBatchIds(personIds); + return ResponseData.success(); + } + + /** + * 修改人员管理 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Person person) { + personService.updateById(person); + return ResponseData.success(); + } + + /** + * 人员管理详情 + */ + @RequestMapping(value = "/detail/{personId}") + @ResponseBody + public Object detail(@PathVariable("personId") String personId) { + return ResponseData.success(personService.selectById(personId)); + } +} 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/PersonMapper.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java new file mode 100644 index 0000000..c2a324b --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/PersonMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * 人员数据表 Mapper 接口 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface PersonMapper extends BaseMapper { + +} 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/PersonMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml new file mode 100644 index 0000000..f556815 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/PersonMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + ID AS id, DELFLAG AS delflag, CREATETIME AS createtime, UPDATETIME AS updatetime, NAME AS name, SEX AS sex, DEPTID AS deptid, ID_CARD AS idCard, REMARKS AS remarks, PERSON_TYPE AS personType + + + 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/Person.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java new file mode 100644 index 0000000..4a8d915 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/model/Person.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.model; + +import java.io.Serializable; + +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 com.casic.missiles.modular.metadata.base.DataMetaModel; + +import java.io.Serializable; + +/** + *

+ * 人员数据表 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@TableName("sys_person") +public class Person extends DataMetaModel { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private Long id; + /** + * 状态(0:有效 1:删除) + */ + @TableField("DELFLAG") + private String delflag; + /** + * 创建时间 + */ + @TableField("CREATETIME") + private Date createtime; + /** + * 修改时间 + */ + @TableField("UPDATETIME") + private Date updatetime; + /** + * 姓名 + */ + @TableField("NAME") + private String name; + /** + * 性别 + */ + @TableField("SEX") + private String sex; + /** + * 所属部门 + */ + @TableField("DEPTID") + private Long deptid; + /** + * 身份证号 + */ + @TableField("ID_CARD") + private String idCard; + /** + * 备注信息 + */ + @TableField("REMARKS") + private String remarks; + /** + * 人员类型 + */ + @TableField("PERSON_TYPE") + private String personType; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDelflag() { + return delflag; + } + + public void setDelflag(String delflag) { + this.delflag = delflag; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public Long getDeptid() { + return deptid; + } + + public void setDeptid(Long deptid) { + this.deptid = deptid; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getPersonType() { + return personType; + } + + public void setPersonType(String personType) { + this.personType = personType; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", delflag=" + delflag + + ", createtime=" + createtime + + ", updatetime=" + updatetime + + ", name=" + name + + ", sex=" + sex + + ", deptid=" + deptid + + ", idCard=" + idCard + + ", remarks=" + remarks + + ", personType=" + personType + + "}"; + } +} 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/IPersonService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java new file mode 100644 index 0000000..c58c236 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IPersonService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Person; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 人员数据表 服务类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +public interface IPersonService extends IService { + +} 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/PersonServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java new file mode 100644 index 0000000..4eb8734 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/PersonServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.dao.PersonMapper; +import com.casic.missiles.modular.system.service.IPersonService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 人员数据表 服务实现类 + *

+ * + * @author lwh123 + * @since 2019-12-03 + */ +@Service +public class PersonServiceImpl extends ServiceImpl implements IPersonService { + +} 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 new file mode 100644 index 0000000..8ff0af3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.constant; + +public class DeviceConst { + /** + * 设备添加日志Key + */ + public static final String DEVICE_ADD_LOG_KEY = "id,devName,devIp"; + + /** + * 远程开门指令 + */ + public static final String REMOTE_OPEN = "open"; + + /** + * 常开指令 + */ + public static final String ALWAYS_OPEN = "alwaysOpen"; + + /** + * 常闭指令 + */ + public static final String ALWAYS_CLOSE = "alwaysClose"; + +} 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 new file mode 100644 index 0000000..dbbabef --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,148 @@ +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.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.DeviceDict; +import com.casic.missiles.modular.system.warpper.DeviceWarpper; +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 com.baomidou.mybatisplus.mapper.EntityWrapper; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; + +import javax.validation.Valid; + +import static com.casic.missiles.modular.system.constant.DeviceConst.DEVICE_ADD_LOG_KEY; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 09:48:25 + */ +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DeviceController.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private ICommonPermissionService permissionService; + + /** + * 获取设备列表,分页 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = deviceService.selectDataScopePage(dataScope,page); + new DeviceWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 添加设备 + */ + @RequestMapping(value = "/add", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "添加设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object add(@Valid Device device, BindingResult result){ + if (result.hasErrors()) { + return ResponseData.error(result.getFieldErrors().get(0).getDefaultMessage()); + } + try { + deviceService.insertDevice(device); + }catch (Exception e){ + logger.error("设备添加失败", e); + e.printStackTrace(); + return ResponseData.error("设备添加失败"); + } + return ResponseData.success(); + } + + /** + * 修改设备 + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "修改设备", key = DEVICE_ADD_LOG_KEY, dict = DeviceDict.class) + public Object update(Device device){ + if (ToolUtil.isEmpty(device.getId())) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + Device oldDevice = this.deviceService.selectById(device.getId()); + LogObjectHolder.me().set(oldDevice); + + deviceService.updateDevice(device); + return ResponseData.success(); + } + + /** + * 删除设备 + */ + @RequestMapping(value = "/delete", method = RequestMethod.POST) + @ResponseBody + @BussinessLog(value = "删除设备") + public Object delete(@RequestParam List ids){ + try { + deviceService.deleteBatchIds(ids); + }catch (Exception e){ + logger.error("设备删除失败", e); + e.printStackTrace(); + return ResponseData.error("设备删除失败"); + } + return ResponseData.success(); + } + + /** + * 远程开门 + */ + @RequestMapping(value = "/open", method = RequestMethod.POST) + @ResponseBody + public Object open(Integer id){ + if(deviceService.remoteOpen(id)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + } + + /** + * 常开常闭 + * @param id + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer id, String alwaysOpen){ + if (ToolUtil.isEmpty(id) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + 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/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..16ed91a --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,25 @@ +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.Device; +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 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/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..d6548eb --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + 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/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..8a72bc0 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dict; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceDict extends AbstractDictMap { + + @Override + public void init() { + put("id","设备ID"); + put("devName","设备名称"); + put("devIp","设备IP"); + } + + @Override + protected void initBeWrapped() {} +} 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 new file mode 100644 index 0000000..814e054 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,90 @@ +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; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Data +@TableName("bus_device") +public class Device extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + /** + * 设备编码 + */ + @TableField("DEV_CODE") + private String devCode; + /** + * 设备名称 + */ + @TableField("DEV_NAME") + private String devName; + /** + * 设备IP + */ + @TableField("DEV_IP") + private String devIp; + /** + * 门编号 + */ + @TableField("DOOR_CODE") + private String doorCode; + /** + * 进出类型(1:进门;0:出门) + */ + @TableField("INOUT_TYPE") + private String inoutType; + /** + * 安装日期 + */ + @TableField("INSTALL_DATE") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date installDate; + /** + * 常开状态(1:常开;0:常闭) + */ + @TableField("ALWAYS_OPEN") + private String alwaysOpen; + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", devCode=" + devCode + + ", 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/service/IDeviceService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..806e446 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.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.Device; +import com.baomidou.mybatisplus.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDeviceService extends IService { + List> selectDataScopePage(DataScope dataScope, Page page); + boolean insertDevice(Device device); + boolean updateDevice(Device device); + boolean remoteOpen(Integer id); + boolean alwaysOpen(Integer id, String alwaysOpen); +} 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 new file mode 100644 index 0000000..5e52614 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,118 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.dao.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.util.SocketClientUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; + +import com.casic.missiles.modular.system.constant.DeviceConst; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + @Value("${iris.socket-port}") + private Integer port; + + @Override + public List> selectDataScopePage(DataScope dataScope, Page page) { + return this.baseMapper.selectDataScopePage(dataScope,page); + } + + @Override + public boolean insertDevice(Device device){ + device.setDevCode(generateDevCode(device)); + return this.insert(device); + } + + @Override + public boolean updateDevice(Device device){ + String devCode = device.getDevCode(); + String doorCode = device.getDoorCode(); + if(ToolUtil.isEmpty(devCode) || !doorCode.equals(extractDoorCode(devCode))){ + device.setDevCode(generateDevCode(device)); + } + return this.updateById(device); + } + + /** + * 自动生成设备编号,生成规则:‘D’+ DOOR_CODE(门编号) + 'N' + COUNT(根据门计算) + **/ + private String generateDevCode(Device device){ + DecimalFormat df = new DecimalFormat("00"); +// 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(); + } + + /** + * 根据设备编号获取门编号 + */ + private String extractDoorCode(String devCode){ + int p1 = devCode.indexOf('D'); + int p2 = devCode.indexOf('N'); + 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); + String devIp = device.getDevIp(); + Map res = SocketClientUtil.sendMessage(devIp,port,DeviceConst.REMOTE_OPEN); + if ((boolean)res.get("success")){ + return true; + }else { + return false; + } + } + + @Override + public boolean alwaysOpen(Integer id, String alwaysOpen) { + Device device = this.selectById(id); + // 1. 发送指令 + String devIp = device.getDevIp(); + String msg = new String(); + if("1".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_OPEN; + }else if("0".equals(alwaysOpen)){ + msg = DeviceConst.ALWAYS_CLOSE; + } + Map res = SocketClientUtil.sendMessage(devIp,port,msg); + if ((boolean)res.get("success")){ + // 2.更新数据库 + device.setAlwaysOpen(alwaysOpen); + this.updateById(device); + return true; + }else { + return false; + } + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..60b0d20 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.util; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SocketClientUtil { + + public static Map sendMessage(String ip, Integer port, String msg){ + Map res = new HashMap<>(); + try{ + Socket socket = new Socket(ip,port); + // 向服务端发送数据 + OutputStream out = socket.getOutputStream(); + out.write(msg.getBytes("utf-8")); + out.flush(); + socket.shutdownOutput(); + // 读取服务端返回数据 + InputStream in = socket.getInputStream(); + byte[] data = new byte[1024]; + int count = in.read(data); + if(count>0){ + String serverData = new String(data,0,count,"utf-8"); + System.out.println(serverData); + res.put("success",true); + res.put("message","请求成功"); + }else { + res.put("success",false); + res.put("message","没有响应"); + } + in.close(); + out.close(); + socket.close(); + }catch (Exception e){ + res.put("success",false); + res.put("message","连接失败"); + } + return res; + } + +} 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 new file mode 100644 index 0000000..6366ab4 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.java @@ -0,0 +1,41 @@ +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 DeviceWarpper extends BaseControllerWarpper { + + public DeviceWarpper(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); + } + + // 进出类型 + if(ToolUtil.isNotEmpty(map.get("inoutType"))){ + String inoutType = String.valueOf(map.get("inoutType")); + if("1".equals(inoutType)){ + map.put("inoutTypeName","进门"); + }else if("0".equals(inoutType)){ + map.put("inoutTypeName","出门"); + }else{ + map.put("inoutTypeName",""); + } + }else{ + map.put("inoutTypeName",""); + } + } +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 9dbe1fb..343547c 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -76,7 +76,11 @@ casic-admin-area ${casic.version} - + + com.casic + casic-metadata-core + ${casic.version} + com.casic diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 8a66b1d..5fa55b1 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -3,6 +3,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java new file mode 100644 index 0000000..274647f --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/controller/TableTestController.java @@ -0,0 +1,44 @@ +package com.casic.missiles.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 仅为mock登录使用 + */ +@Controller +@RequestMapping("/test") +public class TableTestController extends BaseController { + /* private static final Logger logger = LoggerFactory.getLogger(TableTestController.class); + + @Autowired + private IMetadataCommonService metadataCommonService; + + *//** + * 获取mockToken + *//* + @PostMapping("/add") + @ResponseBody + public Object add(@RequestParam Map map) { + map.put("id", IdWorker.getId()); + map.put("targetId", 123L); + metadataCommonService.insertMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + + @PostMapping("/update") + @ResponseBody + public Object update(@RequestParam Map map) { + metadataCommonService.updateMetaData("SysPersonExt", map); + return ResponseData.success(); + } + + @PostMapping("/detail") + @ResponseBody + public Object detail(Long id) { + return ResponseData.success(metadataCommonService.selectOneMetaData("SysPersonExt", id)); + }*/ + +} diff --git a/casic-web/src/main/resources/application.yml b/casic-web/src/main/resources/application.yml index 70cc33b..dd644ca 100644 --- a/casic-web/src/main/resources/application.yml +++ b/casic-web/src/main/resources/application.yml @@ -15,4 +15,7 @@ casic: kaptcha-open: true #是否开启登录时验证码 (true/false) file-upload-path: d:/tmp #文件上传目录(不配置的话为java.io.tmpdir目录) - nologin-urls: /user/login,/kaptcha,/config/baseConfig \ No newline at end of file + nologin-urls: /user/login,/kaptcha,/config/baseConfig +mybatis-plus: + global-config: + sql-injector: com.casic.missiles.modular.metadata.inject.MetaSqlInject \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 2c78b0c..251a8df 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -3,7 +3,7 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -18,4 +18,5 @@ level.com.casic: debug path: logs/ file: missiles.log - +iris: + socket-port: 8000 diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 2c78b0c..313eafd 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,11 +1,11 @@ server: - port: 8093 + port: 8094 ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: root + password: Casic203 initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置