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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} 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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} 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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + 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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @Override + protected void initBeWrapped() {} +} 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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} 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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java new file mode 100644 index 0000000..5d5f5a8 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDoorService extends IService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java new file mode 100644 index 0000000..5d5f5a8 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDoorService extends IService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..bba5295 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,108 @@ +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"); + String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+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); + } + + @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/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java new file mode 100644 index 0000000..5d5f5a8 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDoorService extends IService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..bba5295 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,108 @@ +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"); + String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+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); + } + + @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/service/impl/DoorServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java new file mode 100644 index 0000000..65c8222 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.dao.DoorMapper; +import com.casic.missiles.modular.system.service.IDoorService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DoorServiceImpl extends ServiceImpl implements IDoorService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java new file mode 100644 index 0000000..5d5f5a8 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDoorService extends IService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..bba5295 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,108 @@ +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"); + String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+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); + } + + @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/service/impl/DoorServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java new file mode 100644 index 0000000..65c8222 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.dao.DoorMapper; +import com.casic.missiles.modular.system.service.IDoorService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DoorServiceImpl extends ServiceImpl implements IDoorService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/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/constant/DeviceConst.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java new file mode 100644 index 0000000..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java new file mode 100644 index 0000000..5d5f5a8 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDoorService extends IService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..bba5295 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,108 @@ +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"); + String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+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); + } + + @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/service/impl/DoorServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java new file mode 100644 index 0000000..65c8222 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.dao.DoorMapper; +import com.casic.missiles.modular.system.service.IDoorService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DoorServiceImpl extends ServiceImpl implements IDoorService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/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..aa72c24 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.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 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); + } + } +} 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..a3dc747 --- /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 = "devCode,devName,devIp,position"; + + /** + * 远程开门指令 + */ + 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..1b2defd --- /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 devId + * @param alwaysOpen 1:常开 0:常闭 + */ + @RequestMapping(value = "/alwaysOpen",method = RequestMethod.POST) + @ResponseBody + public Object alwaysOpen(Integer devId, String alwaysOpen){ + if (ToolUtil.isEmpty(devId) || ToolUtil.isEmpty(alwaysOpen)) { + throw new GunsException(GunsExceptionEnum.REQUEST_NULL); + } + if(deviceService.alwaysOpen(devId,alwaysOpen)){ + return ResponseData.success(); + }else { + return ResponseData.error("请求失败"); + } + + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java new file mode 100644 index 0000000..1b44436 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DoorController.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import com.casic.missiles.modular.system.service.IDoorService; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 15:35:38 + */ +@Controller +@RequestMapping("/door") +public class DoorController extends BaseController { + + + @Autowired + private IDoorService doorService; + + + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java new file mode 100644 index 0000000..bd35607 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -0,0 +1,23 @@ +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); +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java new file mode 100644 index 0000000..53fbc03 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/DoorMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface DoorMapper extends BaseMapper { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml new file mode 100644 index 0000000..50264f3 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + ID AS id, DEV_CODE AS devCode, DEV_NAME AS devName, DEV_IP AS devIp, DOOR_CODE AS doorCode, INSTALL_DATE AS installDate, ALWAYS_OPEN AS alwaysOpen + + + + + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml new file mode 100644 index 0000000..6409896 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DoorMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + ID AS id, DOOR_CODE AS doorCode, DOOR_NAME AS doorName, DESCRIPTION AS description, DEPTID AS deptid + + + diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java new file mode 100644 index 0000000..3848f8f --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/dict/DeviceDict.java @@ -0,0 +1,17 @@ +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("devCode","设备编号"); + put("devName","设备名称"); + put("devIp","设备IP"); + put("position","安装位置"); + } + + @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..25465c9 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Device.java @@ -0,0 +1,84 @@ +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; + /** + * 安装日期 + */ + @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 + + ", installDate=" + installDate + + ", alwaysOpen=" + alwaysOpen + + "}"; + } +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/model/Door.java new file mode 100644 index 0000000..e8111a9 --- /dev/null +++ b/casic-iris-device/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-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/IDoorService.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java new file mode 100644 index 0000000..5d5f5a8 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/IDoorService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.model.Door; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +public interface IDoorService extends IService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..bba5295 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,108 @@ +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"); + String count = df.format(this.baseMapper.countDeviceByDoor(device.getDoorCode())+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); + } + + @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/service/impl/DoorServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java new file mode 100644 index 0000000..65c8222 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DoorServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.dao.DoorMapper; +import com.casic.missiles.modular.system.service.IDoorService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 123 + * @since 2019-11-29 + */ +@Service +public class DoorServiceImpl extends ServiceImpl implements IDoorService { + +} diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/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..aa72c24 --- /dev/null +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/warpper/DeviceWarpper.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 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); + } + } +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 2c78b0c..96ba4db 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -18,4 +18,5 @@ level.com.casic: debug path: logs/ file: missiles.log - +iris: + socket-port: 8000