| | |
| | | package org.jeecg.modules.dnc.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.jeecg.common.system.vo.LoginUser; |
| | |
| | | import org.jeecg.modules.dnc.ucenter.UserDepartExt; |
| | | import org.jeecg.modules.dnc.utils.ValidateUtil; |
| | | import org.jeecg.modules.dnc.entity.*; |
| | | import org.jeecg.modules.mdc.entity.MdcEquipment; |
| | | import org.jeecg.modules.mdc.service.IMdcEquipmentService; |
| | | import org.jeecg.modules.mdc.service.IMdcProductionEquipmentService; |
| | | import org.jeecg.modules.system.entity.MdcProduction; |
| | | import org.jeecg.modules.system.entity.MdcProductionEquipment; |
| | | import org.jeecg.modules.system.entity.SysUser; |
| | | import org.jeecg.modules.system.service.IMdcProductionService; |
| | | import org.jeecg.modules.system.service.ISysUserService; |
| | | import org.jeecg.modules.dnc.response.DeviceCode; |
| | | import org.jeecg.modules.dnc.response.DeviceGroupCode; |
| | |
| | | private IProductInfoService productInfoService; |
| | | @Autowired |
| | | private INcLogInfoService iNcLogInfoService; |
| | | @Autowired |
| | | private IMdcProductionService mdcProductionService; |
| | | @Autowired |
| | | private IMdcEquipmentService mdcEquipmentService; |
| | | @Autowired |
| | | private IMdcProductionEquipmentService mdcProductionEquipmentService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | |
| | | if(!ValidateUtil.validateString(userId)) |
| | | ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); |
| | | if(nodeType == 1) { |
| | | DeviceGroup en = deviceGroupService.getById(paramId); |
| | | if(en == null) { |
| | | MdcProduction mdcProduction=mdcProductionService.getById(paramId); |
| | | if(mdcProduction == null) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST); |
| | | } |
| | | DeviceGroupPermission permission = deviceGroupPermissionService.getByUserIdAndGroupId(userId, en.getGroupId()); |
| | | DeviceGroupPermission permission = deviceGroupPermissionService.getByUserIdAndGroupId(userId, mdcProduction.getId()); |
| | | if(permission == null) |
| | | return false; |
| | | return true; |
| | | }else if(nodeType == 2) { |
| | | DeviceInfo deviceInfo = super.getById(paramId); |
| | | if(deviceInfo == null) |
| | | MdcEquipment mdcEquipment = mdcEquipmentService.getById(paramId); |
| | | if(mdcEquipment == null) |
| | | ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST); |
| | | DevicePermission permission = devicePermissionService.getByUserIdAndDeviceId(userId, deviceInfo.getDeviceId()); |
| | | DevicePermission permission = devicePermissionService.getByUserIdAndDeviceId(userId, mdcEquipment.getId()); |
| | | if(permission == null) |
| | | return false; |
| | | return true; |
| | |
| | | ExceptionCast.cast(CommonCode.INVALID_PARAM); |
| | | if(relativeFlag == 1 && nodeType == 1) { |
| | | //分配分组权限才可向下传递用户 |
| | | DeviceGroup deviceGroup = deviceGroupService.getById(paramId); |
| | | if(deviceGroup == null) { |
| | | MdcProduction mdcProduction= mdcProductionService.getById(paramId); |
| | | if(mdcProduction == null) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST); |
| | | } |
| | | boolean b1 = checkDevicePerm(1, deviceGroup.getGroupId()); |
| | | boolean b1 = checkDevicePerm(1, mdcProduction.getId()); |
| | | if(!b1) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | b1 = deviceGroupService.assignAddUser(deviceGroup, userList); |
| | | b1 = deviceGroupPermissionService.assignAddUser(mdcProduction, userList); |
| | | if(!b1) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | //获取分组下所有的子分组 |
| | | List<DeviceGroup> childrenList = deviceGroupService.getChildrenByParentId(deviceGroup.getGroupId()); |
| | | List<MdcProduction> childrenList = mdcProductionService.queryProdByPid(mdcProduction.getId()); |
| | | List<String> childrenIds = new ArrayList<>(); |
| | | if(childrenList != null && !childrenList.isEmpty()) { |
| | | childrenList.forEach(item -> { |
| | | childrenIds.add(item.getGroupId()); |
| | | boolean b = checkDevicePerm(1, item.getGroupId()); |
| | | childrenIds.add(item.getId()); |
| | | boolean b = checkDevicePerm(1, item.getId()); |
| | | if(b) { |
| | | b = deviceGroupService.assignAddUser(item, userList); |
| | | b = deviceGroupPermissionService.assignAddUser(mdcProduction, userList); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | List<DeviceInfo> deviceInfoList = null; |
| | | List<MdcEquipment> mdcEquipmentList = null; |
| | | if(childrenIds.isEmpty()) { |
| | | deviceInfoList = getByGroupId(deviceGroup.getGroupId()); |
| | | mdcEquipmentList =mdcProductionEquipmentService.queryEquipmentsOfProduction(mdcProduction.getId()); |
| | | }else { |
| | | childrenIds.add(deviceGroup.getGroupId()); |
| | | deviceInfoList = getByGroupIdList(childrenIds); |
| | | childrenIds.add(mdcProduction.getId()); |
| | | mdcEquipmentList = mdcProductionEquipmentService.queryEquipmentsOfProductions(childrenIds); |
| | | } |
| | | if(deviceInfoList != null && !deviceInfoList.isEmpty()) { |
| | | deviceInfoList.forEach(item -> { |
| | | boolean b = checkDevicePerm(2, item.getDeviceId()); |
| | | if(mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) { |
| | | mdcEquipmentList.forEach(item -> { |
| | | boolean b = checkDevicePerm(2, item.getId()); |
| | | if(b) { |
| | | b = assignAddUser(item, userList); |
| | | if(!b) |
| | |
| | | }else if(relativeFlag == 2) { |
| | | if(nodeType == 1) { |
| | | //分批分组权限 |
| | | DeviceGroup deviceGroup = deviceGroupService.getById(paramId); |
| | | if(deviceGroup == null) { |
| | | MdcProduction mdcProduction = mdcProductionService.getById(paramId); |
| | | if(mdcProduction == null) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST); |
| | | } |
| | | boolean b = checkDevicePerm(1, deviceGroup.getGroupId()); |
| | | boolean b = checkDevicePerm(1, mdcProduction.getId()); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | b = deviceGroupService.assignAddUser(deviceGroup, userList); |
| | | b = deviceGroupPermissionService.assignAddUser(mdcProduction, userList); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | return true; |
| | | }else if(nodeType == 2) { |
| | | //分配设备权限 |
| | | DeviceInfo deviceInfo = super.getById(paramId); |
| | | if(deviceInfo == null) |
| | | MdcEquipment mdcEquipment=mdcEquipmentService.getById(paramId); |
| | | if(mdcEquipment == null) |
| | | ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST); |
| | | boolean b = checkDevicePerm(2, deviceInfo.getDeviceId()); |
| | | boolean b = checkDevicePerm(2, mdcEquipment.getId()); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR); |
| | | } |
| | | b = assignAddUser(deviceInfo, userList); |
| | | b = assignAddUser(mdcEquipment, userList); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR); |
| | | } |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public boolean assignAddUser(DeviceInfo deviceInfo, Collection<SysUser> userList) { |
| | | if(deviceInfo == null || userList == null || userList.isEmpty()) |
| | | public boolean assignAddUser(MdcEquipment mdcEquipment, Collection<SysUser> userList) { |
| | | if(mdcEquipment == null || userList == null || userList.isEmpty()) |
| | | ExceptionCast.cast(CommonCode.INVALID_PARAM); |
| | | MdcProductionEquipment mdcProductionEquipment=mdcProductionEquipmentService |
| | | .list(new QueryWrapper<MdcProductionEquipment>().eq("equipment_id",mdcEquipment.getId())).get(0); |
| | | List<DevicePermission> permissionList = new ArrayList<>(); |
| | | List<DevicePermissionStream> permissionStreamList = new ArrayList<>(); |
| | | userList.forEach(item -> { |
| | | DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), deviceInfo.getDeviceId()); |
| | | DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), mdcEquipment.getId()); |
| | | if(en == null) { |
| | | en = new DevicePermission(); |
| | | en.setUserId(item.getId()); |
| | | en.setDeviceId(deviceInfo.getDeviceId()); |
| | | en.setDeviceId(mdcEquipment.getId()); |
| | | permissionList.add(en); |
| | | } |
| | | DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(deviceInfo.getGroupId(), deviceInfo.getDeviceId(), item.getId()); |
| | | DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(mdcProductionEquipment.getId(), mdcEquipment.getId(), item.getId()); |
| | | if(stream == null) { |
| | | stream = new DevicePermissionStream(); |
| | | stream.setUserId(item.getId()); |
| | | stream.setGroupId(deviceInfo.getGroupId()); |
| | | stream.setDeviceId(deviceInfo.getDeviceId()); |
| | | stream.setGroupId(mdcProductionEquipment.getId()); |
| | | stream.setDeviceId(mdcEquipment.getId()); |
| | | permissionStreamList.add(stream); |
| | | } |
| | | }); |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public boolean assignRemoveUser(DeviceInfo deviceInfo, Collection<SysUser> userList) { |
| | | if(deviceInfo == null || userList == null || userList.isEmpty()) |
| | | public boolean assignRemoveUser(MdcEquipment mdcEquipment, Collection<SysUser> userList) { |
| | | if(mdcEquipment == null || userList == null || userList.isEmpty()) |
| | | ExceptionCast.cast(CommonCode.INVALID_PARAM); |
| | | MdcProductionEquipment mdcProductionEquipment=mdcProductionEquipmentService |
| | | .list(new QueryWrapper<MdcProductionEquipment>().eq("equipment_id",mdcEquipment.getId())).get(0); |
| | | List<DevicePermission> permissionList = new ArrayList<>(); |
| | | List<DevicePermissionStream> permissionStreamList = new ArrayList<>(); |
| | | userList.forEach(item -> { |
| | | DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), deviceInfo.getDeviceId()); |
| | | DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), mdcEquipment.getId()); |
| | | if(en != null) { |
| | | permissionList.add(en); |
| | | } |
| | | DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(deviceInfo.getGroupId(), deviceInfo.getDeviceId(), item.getId()); |
| | | DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(mdcProductionEquipment.getId(), mdcEquipment.getId(), item.getId()); |
| | | if(stream != null) { |
| | | permissionStreamList.add(stream); |
| | | } |
| | | }); |
| | | //校验清空用户权限 |
| | | List<DevicePermission> existList = devicePermissionService.getByDeviceId(deviceInfo.getDeviceId()); |
| | | List<DevicePermission> existList = devicePermissionService.getByDeviceId(mdcEquipment.getId()); |
| | | if(existList.size() <= permissionList.size()) |
| | | ExceptionCast.cast(DeviceCode.DEVICE_USER_NONE); |
| | | if(!permissionList.isEmpty()) { |
| | |
| | | ExceptionCast.cast(CommonCode.INVALID_PARAM); |
| | | if(relativeFlag == 1 && nodeType == 1) { |
| | | //分配分组权限才可向下传递用户 |
| | | DeviceGroup deviceGroup = deviceGroupService.getById(paramId); |
| | | if(deviceGroup == null) { |
| | | MdcProduction mdcProduction=mdcProductionService.getById(paramId); |
| | | if(mdcProduction == null) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST); |
| | | } |
| | | boolean b1 = checkDevicePerm(1, deviceGroup.getGroupId()); |
| | | boolean b1 = checkDevicePerm(1, mdcProduction.getId()); |
| | | if(!b1) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | b1 = deviceGroupService.assignRemoveUser(deviceGroup, userList); |
| | | b1 = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList); |
| | | if(!b1) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | //获取分组下所有的子分组 |
| | | List<DeviceGroup> childrenList = deviceGroupService.getChildrenByParentId(deviceGroup.getGroupId()); |
| | | List<MdcProduction> childrenList = mdcProductionService.queryProdByPid(mdcProduction.getId()); |
| | | List<String> childrenIds = new ArrayList<>(); |
| | | if(childrenList != null && !childrenList.isEmpty()) { |
| | | childrenList.forEach(item -> { |
| | | childrenIds.add(item.getGroupId()); |
| | | boolean b = checkDevicePerm(1, item.getGroupId()); |
| | | childrenIds.add(item.getId()); |
| | | boolean b = checkDevicePerm(1, item.getId()); |
| | | if(b) { |
| | | b = deviceGroupService.assignRemoveUser(item, userList); |
| | | b = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | List<DeviceInfo> deviceInfoList = null; |
| | | List<MdcEquipment> mdcEquipmentList = null; |
| | | if(childrenIds.isEmpty()) { |
| | | deviceInfoList = getByGroupId(deviceGroup.getGroupId()); |
| | | mdcEquipmentList =mdcProductionEquipmentService.queryEquipmentsOfProduction(mdcProduction.getId()); |
| | | }else { |
| | | childrenIds.add(deviceGroup.getGroupId()); |
| | | deviceInfoList = getByGroupIdList(childrenIds); |
| | | childrenIds.add(mdcProduction.getId()); |
| | | mdcEquipmentList = mdcProductionEquipmentService.queryEquipmentsOfProductions(childrenIds); |
| | | } |
| | | if(deviceInfoList != null && !deviceInfoList.isEmpty()) { |
| | | deviceInfoList.forEach(item -> { |
| | | boolean b = checkDevicePerm(2, item.getDeviceId()); |
| | | if(mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) { |
| | | mdcEquipmentList.forEach(item -> { |
| | | boolean b = checkDevicePerm(2, item.getId()); |
| | | if(b) { |
| | | b = assignRemoveUser(item, userList); |
| | | if(!b) |
| | |
| | | }else if(relativeFlag == 2) { |
| | | if(nodeType == 1) { |
| | | //分批分组权限 |
| | | DeviceGroup deviceGroup = deviceGroupService.getById(paramId); |
| | | if(deviceGroup == null) { |
| | | MdcProduction mdcProduction = mdcProductionService.getById(paramId); |
| | | if(mdcProduction == null) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST); |
| | | } |
| | | boolean b = checkDevicePerm(1, deviceGroup.getGroupId()); |
| | | boolean b = checkDevicePerm(1, mdcProduction.getId()); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | b = deviceGroupService.assignRemoveUser(deviceGroup, userList); |
| | | b = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR); |
| | | } |
| | | return true; |
| | | }else if(nodeType == 2) { |
| | | //分配设备权限 |
| | | DeviceInfo deviceInfo = super.getById(paramId); |
| | | if(deviceInfo == null) |
| | | MdcEquipment mdcEquipment=mdcEquipmentService.getById(paramId); |
| | | if(mdcEquipment == null) |
| | | ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST); |
| | | boolean b = checkDevicePerm(2, deviceInfo.getDeviceId()); |
| | | boolean b = checkDevicePerm(2, mdcEquipment.getId()); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR); |
| | | } |
| | | b = assignRemoveUser(deviceInfo, userList); |
| | | b = assignRemoveUser(mdcEquipment, userList); |
| | | if(!b) { |
| | | ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR); |
| | | } |