diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - OutputStream out = socket.getOutputStream(); - out.write(msg.getBytes("utf-8")); - out.flush(); - socket.shutdownOutput(); - // 读取服务端返回数据 - InputStream in = socket.getInputStream(); - byte[] data = new byte[1024]; - int count = in.read(data); - if(count>0){ - String serverData = new String(data,0,count,"utf-8"); - System.out.println(serverData); - res.put("success",true); - res.put("message","请求成功"); - }else { - res.put("success",false); - res.put("message","没有响应"); - } - in.close(); - out.close(); - socket.close(); - }catch (Exception e){ - res.put("success",false); - res.put("message","连接失败"); - } - return res; - } - -} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 901773f..48ad205 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -48,4 +48,6 @@ ResponseData parseSourceFile(MultipartFile file) throws Exception; List personCodeList(); + + List updateData(List personIds, List deviceIds); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 901773f..48ad205 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -48,4 +48,6 @@ ResponseData parseSourceFile(MultipartFile file) throws Exception; List personCodeList(); + + List updateData(List personIds, List deviceIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index f32db37..e7c3cc4 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.metadata.service.IMetadataSupportService; @@ -15,6 +16,7 @@ import java.io.*; import java.net.Socket; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -41,6 +43,13 @@ } @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } + + @Override public String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException { Map map = null; map = selectByPersonId(personId); diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 901773f..48ad205 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -48,4 +48,6 @@ ResponseData parseSourceFile(MultipartFile file) throws Exception; List personCodeList(); + + List updateData(List personIds, List deviceIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index f32db37..e7c3cc4 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.metadata.service.IMetadataSupportService; @@ -15,6 +16,7 @@ import java.io.*; import java.net.Socket; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -41,6 +43,13 @@ } @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } + + @Override public String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException { Map map = null; map = selectByPersonId(personId); diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java index 748517a..b5e6a7e 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java @@ -1,11 +1,14 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.casic.missiles.modular.register.dao.IrisPersonPhotoMapper; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 服务实现类 @@ -17,4 +20,10 @@ @Service public class IrisPersonPhotoServiceImpl extends ServiceImpl implements IIrisPersonPhotoService { + @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 901773f..48ad205 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -48,4 +48,6 @@ ResponseData parseSourceFile(MultipartFile file) throws Exception; List personCodeList(); + + List updateData(List personIds, List deviceIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index f32db37..e7c3cc4 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.metadata.service.IMetadataSupportService; @@ -15,6 +16,7 @@ import java.io.*; import java.net.Socket; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -41,6 +43,13 @@ } @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } + + @Override public String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException { Map map = null; map = selectByPersonId(personId); diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java index 748517a..b5e6a7e 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java @@ -1,11 +1,14 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.casic.missiles.modular.register.dao.IrisPersonPhotoMapper; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 服务实现类 @@ -17,4 +20,10 @@ @Service public class IrisPersonPhotoServiceImpl extends ServiceImpl implements IIrisPersonPhotoService { + @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java index 3abf923..b15627c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.toolkit.IdWorker; @@ -21,12 +22,18 @@ import com.casic.missiles.modular.register.dao.IrisPersonMapper; import com.casic.missiles.modular.register.dto.PersonAtdDTO; import com.casic.missiles.modular.register.enums.PersonTypeEnums; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.casic.missiles.modular.register.service.IIrisPersonService; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.Device; import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -78,6 +85,12 @@ private ICommonDeptService commonDeptService; @Resource private IrisPersonMapper irisPersonMapper; + @Autowired + private IIrisPersonPhotoService iIrisPersonPhotoService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer devicePort; @Transactional(rollbackFor = Exception.class) @@ -289,4 +302,39 @@ public List personCodeList() { return irisPersonMapper.personCodeList(); } + + @Override + public List updateData(List personIds, List deviceIds) { + List personList = new ArrayList<>(); + Set deptIds = new HashSet<>(); + for (Long personId : personIds) { + Person person = personService.getPersonById(personId); + personList.add(person); + deptIds.add(person.getDeptid()); + } + List deptList = new ArrayList<>(); + for (Long deptId : deptIds) { + Dept dept = permissionService.getDeptById(deptId); + deptList.add(dept); + } + List irisDataList = irisDataService.selectByPersonIds(personIds); + List irisPersonPhotoList = iIrisPersonPhotoService.selectByPersonIds(personIds); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("iris_data",irisDataList); + jsonObject.put("iris_person_photo",irisPersonPhotoList); + jsonObject.put("sys_person",personList); + jsonObject.put("sys_dept",deptList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERSON.concat(jsonObject.toJSONString()); + + List errorList = new ArrayList<>(); + for (Long deviceId : deviceIds) { + Device device = deviceSupportService.selectById(deviceId); + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),devicePort,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 901773f..48ad205 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -48,4 +48,6 @@ ResponseData parseSourceFile(MultipartFile file) throws Exception; List personCodeList(); + + List updateData(List personIds, List deviceIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index f32db37..e7c3cc4 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.metadata.service.IMetadataSupportService; @@ -15,6 +16,7 @@ import java.io.*; import java.net.Socket; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -41,6 +43,13 @@ } @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } + + @Override public String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException { Map map = null; map = selectByPersonId(personId); diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java index 748517a..b5e6a7e 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java @@ -1,11 +1,14 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.casic.missiles.modular.register.dao.IrisPersonPhotoMapper; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 服务实现类 @@ -17,4 +20,10 @@ @Service public class IrisPersonPhotoServiceImpl extends ServiceImpl implements IIrisPersonPhotoService { + @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java index 3abf923..b15627c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.toolkit.IdWorker; @@ -21,12 +22,18 @@ import com.casic.missiles.modular.register.dao.IrisPersonMapper; import com.casic.missiles.modular.register.dto.PersonAtdDTO; import com.casic.missiles.modular.register.enums.PersonTypeEnums; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.casic.missiles.modular.register.service.IIrisPersonService; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.Device; import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -78,6 +85,12 @@ private ICommonDeptService commonDeptService; @Resource private IrisPersonMapper irisPersonMapper; + @Autowired + private IIrisPersonPhotoService iIrisPersonPhotoService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer devicePort; @Transactional(rollbackFor = Exception.class) @@ -289,4 +302,39 @@ public List personCodeList() { return irisPersonMapper.personCodeList(); } + + @Override + public List updateData(List personIds, List deviceIds) { + List personList = new ArrayList<>(); + Set deptIds = new HashSet<>(); + for (Long personId : personIds) { + Person person = personService.getPersonById(personId); + personList.add(person); + deptIds.add(person.getDeptid()); + } + List deptList = new ArrayList<>(); + for (Long deptId : deptIds) { + Dept dept = permissionService.getDeptById(deptId); + deptList.add(dept); + } + List irisDataList = irisDataService.selectByPersonIds(personIds); + List irisPersonPhotoList = iIrisPersonPhotoService.selectByPersonIds(personIds); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("iris_data",irisDataList); + jsonObject.put("iris_person_photo",irisPersonPhotoList); + jsonObject.put("sys_person",personList); + jsonObject.put("sys_dept",deptList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERSON.concat(jsonObject.toJSONString()); + + List errorList = new ArrayList<>(); + for (Long deviceId : deviceIds) { + Device device = deviceSupportService.selectById(deviceId); + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),devicePort,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + } } diff --git a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java new file mode 100644 index 0000000..aa02d50 --- /dev/null +++ b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.system.constant; + +public class SocketConst { + + /** + * 新增授权socket前缀 + */ + public static final String SOCKET_PREFIX_ADD_PERMISSION = "addPermission:"; + + /** + * 取消授权socket前缀 + */ + public static final String SOCKET_PREFIX_DELETE_PERMISSION = "deletePermission:"; + + /** + * 人员数据下发socket前缀 + */ + public static final String SOCKET_PREFIX_ADD_PERSON = "addPerson:"; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 901773f..48ad205 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -48,4 +48,6 @@ ResponseData parseSourceFile(MultipartFile file) throws Exception; List personCodeList(); + + List updateData(List personIds, List deviceIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index f32db37..e7c3cc4 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.metadata.service.IMetadataSupportService; @@ -15,6 +16,7 @@ import java.io.*; import java.net.Socket; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -41,6 +43,13 @@ } @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } + + @Override public String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException { Map map = null; map = selectByPersonId(personId); diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java index 748517a..b5e6a7e 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java @@ -1,11 +1,14 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.casic.missiles.modular.register.dao.IrisPersonPhotoMapper; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 服务实现类 @@ -17,4 +20,10 @@ @Service public class IrisPersonPhotoServiceImpl extends ServiceImpl implements IIrisPersonPhotoService { + @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java index 3abf923..b15627c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.toolkit.IdWorker; @@ -21,12 +22,18 @@ import com.casic.missiles.modular.register.dao.IrisPersonMapper; import com.casic.missiles.modular.register.dto.PersonAtdDTO; import com.casic.missiles.modular.register.enums.PersonTypeEnums; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.casic.missiles.modular.register.service.IIrisPersonService; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.Device; import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -78,6 +85,12 @@ private ICommonDeptService commonDeptService; @Resource private IrisPersonMapper irisPersonMapper; + @Autowired + private IIrisPersonPhotoService iIrisPersonPhotoService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer devicePort; @Transactional(rollbackFor = Exception.class) @@ -289,4 +302,39 @@ public List personCodeList() { return irisPersonMapper.personCodeList(); } + + @Override + public List updateData(List personIds, List deviceIds) { + List personList = new ArrayList<>(); + Set deptIds = new HashSet<>(); + for (Long personId : personIds) { + Person person = personService.getPersonById(personId); + personList.add(person); + deptIds.add(person.getDeptid()); + } + List deptList = new ArrayList<>(); + for (Long deptId : deptIds) { + Dept dept = permissionService.getDeptById(deptId); + deptList.add(dept); + } + List irisDataList = irisDataService.selectByPersonIds(personIds); + List irisPersonPhotoList = iIrisPersonPhotoService.selectByPersonIds(personIds); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("iris_data",irisDataList); + jsonObject.put("iris_person_photo",irisPersonPhotoList); + jsonObject.put("sys_person",personList); + jsonObject.put("sys_dept",deptList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERSON.concat(jsonObject.toJSONString()); + + List errorList = new ArrayList<>(); + for (Long deviceId : deviceIds) { + Device device = deviceSupportService.selectById(deviceId); + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),devicePort,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + } } diff --git a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java new file mode 100644 index 0000000..aa02d50 --- /dev/null +++ b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.system.constant; + +public class SocketConst { + + /** + * 新增授权socket前缀 + */ + public static final String SOCKET_PREFIX_ADD_PERMISSION = "addPermission:"; + + /** + * 取消授权socket前缀 + */ + public static final String SOCKET_PREFIX_DELETE_PERMISSION = "deletePermission:"; + + /** + * 人员数据下发socket前缀 + */ + public static final String SOCKET_PREFIX_ADD_PERSON = "addPerson:"; +} diff --git a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java index e02801c..161167e 100644 --- a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java +++ b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java @@ -2,6 +2,7 @@ import com.casic.missiles.modular.system.model.Device; +import java.io.Serializable; import java.util.List; public interface IDeviceSupportService { @@ -12,4 +13,8 @@ * @return 返回数据权限内的设备列表 */ List selectDeviceByType(String devType); + + List selectDeviceByDoor(String doorCode); + + Device selectById(Serializable id); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index fc5722a..ea96afa 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,11 +1,16 @@ package com.casic.missiles.modular.system.controller; +import com.alibaba.fastjson.JSONObject; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.AcsPermission; +import com.casic.missiles.modular.system.util.SocketClientUtil; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -15,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.net.Socket; import java.util.List; import java.util.Map; @@ -120,16 +126,29 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("strategyId")Integer strategyId, @RequestBody List personList){ - try{ - acsPermissionService.addPermission(doorCode, personList, strategyId); - }catch (Exception e){ - if (e instanceof DuplicateKeyException) { - return ResponseData.error("重复授权"); + if(ToolUtil.isNotEmpty(personList)){ + List acsPermissionList = null; + List errorList = null; + try{ + acsPermissionList = acsPermissionService.addPermission(doorCode, personList, strategyId); + errorList = acsPermissionService.updateSocketPermission(doorCode,strategyId,acsPermissionList); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); } - logger.error("添加授权失败", e); - return ResponseData.error("添加授权失败"); + if(ToolUtil.isEmpty(acsPermissionList)){ + return ResponseData.error("保存授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("保存授权成功, ".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } + }else { + return ResponseData.success(); } - return ResponseData.success(); + } /** @@ -157,9 +176,17 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete(@RequestParam Integer permissionId){ - acsPermissionService.deleteById(permissionId); - return ResponseData.success(); + public Object delete(@RequestParam(value = "ids") List ids){ + String doorCode = acsPermissionService.selectById(ids.get(0)).getDoorCode(); + boolean delete = acsPermissionService.deleteBatchIds(ids); + List errorList = acsPermissionService.deleteSocketPermission(ids,doorCode); + if(!delete){ + return ResponseData.error("取消授权失败"); + }else if(ToolUtil.isNotEmpty(errorList)){ + return ResponseData.error("取消授权成功,".concat(StringUtils.join(errorList,",")).concat("下发失败")); + }else { + return ResponseData.success(); + } } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java index 1f1103c..5fa57a3 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IAcsPermissionService.java @@ -21,6 +21,8 @@ List> selectStaffList(Page page,String doorCode,String keyword,Long deptId); List> selectVisitorList(Page page,String doorCode,String keyword,String beginTime,String endTime); List> selectUserList(String doorCode,String personType,String keyword,Long deptId); - Boolean addPermission(String doorCode,List personList,Integer strategyId); + List addPermission(String doorCode,List personList,Integer strategyId); + List updateSocketPermission(String doorCode,Integer strategyId,List acsPermissionList); + List deleteSocketPermission(List permissionIds,String doorCode); Boolean deleteByStrategy(Integer strategyId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java index 765ef93..62c76f9 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/AcsPermissionServiceImpl.java @@ -1,15 +1,25 @@ package com.casic.missiles.modular.system.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.dao.AcsPermissionMapper; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.model.Door; +import com.casic.missiles.modular.system.model.Strategy; import com.casic.missiles.modular.system.service.IAcsPermissionService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.service.IDoorService; +import com.casic.missiles.modular.system.service.IStrategyService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +40,14 @@ public class AcsPermissionServiceImpl extends ServiceImpl implements IAcsPermissionService { @Autowired private ICommonPermissionService commonPermissionService; + @Autowired + private IDoorService doorService; + @Autowired + private IStrategyService strategyService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer port; @Override public List> selectDoorList(DataScope dataScope, Page page) { @@ -48,7 +66,8 @@ @Override @Transactional - public Boolean addPermission(String doorCode, List personList, Integer strategyId) { + public List addPermission(String doorCode, List personList, Integer strategyId) { + List acsPermissionList = new ArrayList<>(); for (Long personId : personList) { AcsPermission acsPermission = new AcsPermission(); acsPermission.setDoorCode(doorCode); @@ -57,8 +76,49 @@ acsPermission.setCreateTime(new Date()); acsPermission.setCreateUser(commonPermissionService.getCurrLoginUser().getId()); this.insert(acsPermission); + acsPermissionList.add(acsPermission); } - return true; + return acsPermissionList; + } + + @Override + public List updateSocketPermission(String doorCode, Integer strategyId, List acsPermissionList) { + List doorList = new ArrayList<>(); + doorList.add(doorService.selectByCode(doorCode)); + List strategyList = new ArrayList<>(); + strategyList.add(strategyService.selectById(strategyId)); + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("acs_door",doorList); + jsonObject.put("acs_permission",acsPermissionList); + jsonObject.put("acs_strategy",strategyList); + jsonObject.put("bus_device",deviceList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + + } + + @Override + public List deleteSocketPermission(List permissionIds,String doorCode) { + List deviceList = deviceSupportService.selectDeviceByDoor(doorCode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("ids",permissionIds); + String socketMsg = SocketConst.SOCKET_PREFIX_DELETE_PERMISSION.concat(jsonObject.toJSONString()); + List errorList = new ArrayList<>(); + for (Device device : deviceList) { + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),port,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; } @Override diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java index 1bcf678..2f3026b 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -132,6 +132,8 @@ Device oldDevice = this.deviceService.selectById(device.getId()); LogObjectHolder.me().set(oldDevice); try { + device.setInoutType(oldDevice.getInoutType()); + device.setDoorCode(oldDevice.getDoorCode()); deviceService.updateById(device); }catch (Exception e){ if (e instanceof DuplicateKeyException) { diff --git a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 2b91f30..c005a94 100644 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-iris-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -62,6 +62,13 @@ } @Override + public List selectDeviceByDoor(String doorCode) { + EntityWrapper query = new EntityWrapper(); + query.eq("DOOR_CODE",doorCode); + return this.selectList(query); + } + + @Override public List batchUpdateDB(List ids) { List failedIds = new ArrayList<>(); for (Integer id : ids) { 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 deleted file mode 100644 index 2dc091c..0000000 --- a/casic-iris-device/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -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); - // read的超时时间 10s - socket.setSoTimeout(10000); - // 向服务端发送数据 - 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-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index b84ea9e..10d865c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -33,6 +33,7 @@ import com.casic.missiles.modular.system.dto.PersonResDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.service.ICasicFileService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -278,4 +279,16 @@ return ResponseData.error("导入失败"); } } + + @RequestMapping(value = "/updateData", method = RequestMethod.POST) + @ResponseBody + public Object updateData(@RequestParam("personIds") List personIds, + @RequestParam("deviceIds") List deviceIds){ + List errorList = irisPersonService.updateData(personIds, deviceIds); + if(ToolUtil.isEmpty(errorList)){ + return ResponseData.success(); + }else{ + return ResponseData.error(StringUtils.join(errorList,",").concat("下发失败")); + } + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java index 330fc7a..706ff7b 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -17,7 +18,9 @@ * @since 2019-11-29 */ public interface IIrisDataService extends IService { - Map selectByPersonId(@Param("personId") String personId); + Map selectByPersonId(String personId); + + List selectByPersonIds(List personIds); String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java index 3e3723e..63f1672 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonPhotoService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,5 @@ * @since 2020-04-01 */ public interface IIrisPersonPhotoService extends IService { - + List selectByPersonIds(List personIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java index 901773f..48ad205 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisPersonService.java @@ -48,4 +48,6 @@ ResponseData parseSourceFile(MultipartFile file) throws Exception; List personCodeList(); + + List updateData(List personIds, List deviceIds); } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java index f32db37..e7c3cc4 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.metadata.service.IMetadataSupportService; @@ -15,6 +16,7 @@ import java.io.*; import java.net.Socket; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -41,6 +43,13 @@ } @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } + + @Override public String addIrisData(String leftFilePath1,String leftFilePath2,String rightFilePath1,String rightFilePath2,String personId,String idCardNo) throws IOException { Map map = null; map = selectByPersonId(personId); diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java index 748517a..b5e6a7e 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonPhotoServiceImpl.java @@ -1,11 +1,14 @@ package com.casic.missiles.modular.register.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.casic.missiles.modular.register.dao.IrisPersonPhotoMapper; import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 服务实现类 @@ -17,4 +20,10 @@ @Service public class IrisPersonPhotoServiceImpl extends ServiceImpl implements IIrisPersonPhotoService { + @Override + public List selectByPersonIds(List personIds) { + EntityWrapper query = new EntityWrapper(); + query.in("PERSON_ID",personIds); + return this.selectList(query); + } } diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java index 3abf923..b15627c 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.register.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.toolkit.IdWorker; @@ -21,12 +22,18 @@ import com.casic.missiles.modular.register.dao.IrisPersonMapper; import com.casic.missiles.modular.register.dto.PersonAtdDTO; import com.casic.missiles.modular.register.enums.PersonTypeEnums; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.model.IrisPersonPhoto; import com.casic.missiles.modular.register.service.IIrisDataService; import com.casic.missiles.modular.register.service.IIrisPersonPhotoService; import com.casic.missiles.modular.register.service.IIrisPersonService; +import com.casic.missiles.modular.system.constant.SocketConst; import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.Device; import com.casic.missiles.modular.system.model.Person; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import com.casic.missiles.modular.system.util.SocketClientUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -78,6 +85,12 @@ private ICommonDeptService commonDeptService; @Resource private IrisPersonMapper irisPersonMapper; + @Autowired + private IIrisPersonPhotoService iIrisPersonPhotoService; + @Autowired + private IDeviceSupportService deviceSupportService; + @Value("${iris.socket-port}") + private Integer devicePort; @Transactional(rollbackFor = Exception.class) @@ -289,4 +302,39 @@ public List personCodeList() { return irisPersonMapper.personCodeList(); } + + @Override + public List updateData(List personIds, List deviceIds) { + List personList = new ArrayList<>(); + Set deptIds = new HashSet<>(); + for (Long personId : personIds) { + Person person = personService.getPersonById(personId); + personList.add(person); + deptIds.add(person.getDeptid()); + } + List deptList = new ArrayList<>(); + for (Long deptId : deptIds) { + Dept dept = permissionService.getDeptById(deptId); + deptList.add(dept); + } + List irisDataList = irisDataService.selectByPersonIds(personIds); + List irisPersonPhotoList = iIrisPersonPhotoService.selectByPersonIds(personIds); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("iris_data",irisDataList); + jsonObject.put("iris_person_photo",irisPersonPhotoList); + jsonObject.put("sys_person",personList); + jsonObject.put("sys_dept",deptList); + String socketMsg = SocketConst.SOCKET_PREFIX_ADD_PERSON.concat(jsonObject.toJSONString()); + + List errorList = new ArrayList<>(); + for (Long deviceId : deviceIds) { + Device device = deviceSupportService.selectById(deviceId); + Map socketRes = SocketClientUtil.sendMessage(device.getDevIp(),devicePort,socketMsg); + if(!(boolean)socketRes.get("success")){ + errorList.add(device.getDevCode()); + } + } + return errorList; + } } diff --git a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java new file mode 100644 index 0000000..aa02d50 --- /dev/null +++ b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/constant/SocketConst.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.system.constant; + +public class SocketConst { + + /** + * 新增授权socket前缀 + */ + public static final String SOCKET_PREFIX_ADD_PERMISSION = "addPermission:"; + + /** + * 取消授权socket前缀 + */ + public static final String SOCKET_PREFIX_DELETE_PERMISSION = "deletePermission:"; + + /** + * 人员数据下发socket前缀 + */ + public static final String SOCKET_PREFIX_ADD_PERSON = "addPerson:"; +} diff --git a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java index e02801c..161167e 100644 --- a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java +++ b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/service/IDeviceSupportService.java @@ -2,6 +2,7 @@ import com.casic.missiles.modular.system.model.Device; +import java.io.Serializable; import java.util.List; public interface IDeviceSupportService { @@ -12,4 +13,8 @@ * @return 返回数据权限内的设备列表 */ List selectDeviceByType(String devType); + + List selectDeviceByDoor(String doorCode); + + Device selectById(Serializable id); } diff --git a/casic-iris-support/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java new file mode 100644 index 0000000..649136f --- /dev/null +++ b/casic-iris-support/src/main/java/com/casic/missiles/modular/system/util/SocketClientUtil.java @@ -0,0 +1,46 @@ +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); + // read的超时时间 10s + socket.setSoTimeout(10000); + // 向服务端发送数据 + 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",serverData); + }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; + } + +}