From 8f22c7b297417ac7df12cb07eb9edd3a77dd01a1 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 31 十二月 2024 17:44:22 +0800 Subject: [PATCH] 修改华为云设备相关功能 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 130 ++++++++++++++++++++++++++++++++----------- 1 files changed, 96 insertions(+), 34 deletions(-) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 888df57..5c6bf3b 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -2,7 +2,6 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.model.TAppUserCar; @@ -10,9 +9,8 @@ import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.BatchSetAccountingStrategy; import com.ruoyi.chargingPile.api.query.PageChargingPileList; -import com.ruoyi.chargingPile.api.vo.TChargingGunVO; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ChargeMonitoring; import com.ruoyi.chargingPile.dto.ChargingGunCountMonitoring; import com.ruoyi.chargingPile.dto.ChargingGunMonitoring; @@ -22,17 +20,20 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.IntegrationClient; import com.ruoyi.integration.api.feignClient.IotInterfaceClient; +import com.ruoyi.integration.api.feignClient.SendMessageClient; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; +import com.ruoyi.integration.api.model.QrCodeDelivery; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.vo.AddDevice; import com.ruoyi.integration.api.vo.AddDeviceResp; import com.ruoyi.integration.api.vo.DeleteDeviceResp; +import com.ruoyi.integration.api.vo.ShowDeviceResp; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; @@ -52,7 +53,6 @@ import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * <p> @@ -113,6 +113,11 @@ @Resource private TAccountingStrategyDetailService accountingStrategyDetailService; + @Resource + private SendMessageClient sendMessageClient; + @Resource + private TokenService tokenService; + @@ -126,7 +131,7 @@ public PageInfo<PageChargingPileListDTO> pageChargingPileList(PageChargingPileList page) { Set<Integer> siteIds = null; //校验合作商权限 - SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); + SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); //合作商 @@ -134,7 +139,7 @@ siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_PILE); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 - if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); @@ -172,18 +177,23 @@ return AjaxResult.error("设备编号已存在"); } //调用华为Iot创建设备 -// AddDevice addDevice = new AddDevice(); -// addDevice.setProductId("66da68d21837002b28b34ec0"); -// addDevice.setNodeId(chargingPile.getCode()); -// addDevice.setDeviceName(chargingPile.getName()); -// addDevice.setDescription(chargingPile.getNumber().toString()); -// AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData(); -// if(null != deviceResp){ -// int httpStatusCode = deviceResp.getHttpStatusCode(); -// if(httpStatusCode == 201){ -// chargingPile.setIotdDeviceId(deviceResp.getDeviceId()); -// } -// } + AddDevice addDevice = new AddDevice(); + addDevice.setProductId("66da68d21837002b28b34ec0"); + addDevice.setNodeId(chargingPile.getCode()); + addDevice.setDeviceName(chargingPile.getName()); + addDevice.setDescription(chargingPile.getNumber().toString()); + AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData(); + if(null != deviceResp){ + int httpStatusCode = deviceResp.getHttpStatusCode(); + if(httpStatusCode == 201){ + chargingPile.setIotdDeviceId(deviceResp.getDeviceId()); + }else{ + log.error("华为创建设备失败" + JSON.toJSONString(deviceResp)); + return AjaxResult.error("华为创建设备失败"); + } + }else{ + return AjaxResult.error("华为创建设备失败"); + } this.save(chargingPile); return AjaxResult.success(); } @@ -247,7 +257,54 @@ if(null != one && !one.getId().equals(chargingPile.getId())){ return AjaxResult.error("设备编号已存在"); } + TChargingPile tChargingPile = this.getById(chargingPile.getId()); + ShowDeviceResp showDeviceResp = iotInterfaceClient.showDeviceRequest(tChargingPile.getCode()).getData(); + if(null != showDeviceResp){ + DeleteDeviceResp deleteDeviceResp = iotInterfaceClient.deleteDevice(tChargingPile.getCode()).getData(); + if(null == deleteDeviceResp || (deleteDeviceResp.getHttpStatusCode() != 200 && deleteDeviceResp.getHttpStatusCode() != 201 && deleteDeviceResp.getHttpStatusCode() != 204)){ + return AjaxResult.error("删除设备异常,请查看华为设备管理"); + } + } + + + //调用华为Iot创建设备 + AddDevice addDevice = new AddDevice(); + addDevice.setProductId("66da68d21837002b28b34ec0"); + addDevice.setNodeId(chargingPile.getCode()); + addDevice.setDeviceName(chargingPile.getName()); + addDevice.setDescription(chargingPile.getNumber().toString()); + AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData(); + if(null != deviceResp){ + int httpStatusCode = deviceResp.getHttpStatusCode(); + if(httpStatusCode == 201){ + chargingPile.setIotdDeviceId(deviceResp.getDeviceId()); + }else{ + log.error("华为创建设备失败" + JSON.toJSONString(deviceResp)); + return AjaxResult.error("华为创建设备失败"); + } + }else{ + return AjaxResult.error("华为创建设备失败"); + } this.updateById(chargingPile); + + List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)); + for (TChargingGun chargingGun : list) { + TChargingGun chargingGun1 = new TChargingGun(); + chargingGun1.setId(chargingGun.getId()); + chargingGun1.setFullNumber(chargingPile.getCode() + chargingGun.getCode()); + chargingGunService.updateById(chargingGun1); + + //下发硬件充电二维码 + String code_prefix = "https://mxcd.zhinenganguan.com?No="; + QrCodeDelivery qrCodeDelivery = new QrCodeDelivery(); + qrCodeDelivery.setCharging_pile_code(chargingPile.getCode()); + qrCodeDelivery.setCharging_gun_code(chargingGun.getCode()); + qrCodeDelivery.setCode_format(1); + qrCodeDelivery.setPrefix_length(code_prefix.length()); + qrCodeDelivery.setCode_prefix(code_prefix); + qrCodeDelivery.setQr_code(code_prefix + chargingPile.getCode() + chargingGun.getCode()); + sendMessageClient.qrCodeDelivery(qrCodeDelivery); + } return AjaxResult.success(); } @@ -268,11 +325,17 @@ for (Integer id : ids) { TChargingPile chargingPile = this.getById(id); //调用华为Iot删除设备 -// if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){ -// DeleteDeviceResp deviceResp = iotInterfaceClient.deleteDevice(chargingPile.getIotdDeviceId()).getData(); -// if(null != deviceResp && deviceResp.getHttpStatusCode() == 0){ -// } -// } + if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){ + ShowDeviceResp showDeviceResp = iotInterfaceClient.showDeviceRequest(chargingPile.getCode()).getData(); + if(null != showDeviceResp){ + DeleteDeviceResp deleteDeviceResp = iotInterfaceClient.deleteDevice(chargingPile.getCode()).getData(); + if(null == deleteDeviceResp || (deleteDeviceResp.getHttpStatusCode() != 200 && deleteDeviceResp.getHttpStatusCode() != 201 && deleteDeviceResp.getHttpStatusCode() != 204)){ + return AjaxResult.error("删除设备异常,请查看华为设备管理"); + } + chargingPile.setIotdDeviceId(""); + } + + } this.removeById(chargingPile); } return AjaxResult.success(); @@ -298,7 +361,6 @@ //下发硬件更新计费模板 List<TChargingPile> tChargingPiles = this.listByIds(id); for (TChargingPile chargingPile : tChargingPiles) { - System.err.println(JSON.toJSONString(accountingStrategyDetails)); integrationClient.setupBillingModel1(chargingPile.getCode(), JSON.toJSONString(accountingStrategyDetails)); } @@ -347,14 +409,14 @@ //获取当前登录账户的站点权限数据 Set<Integer> siteIds = new HashSet<>(); if(0 == siteId){ - SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); + SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); if(2 == roleType){ - siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_FACILITY_MONITORING); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 - if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); @@ -439,14 +501,14 @@ //获取当前登录账户的站点权限数据 Set<Integer> siteIds = new HashSet<>(); if(0 == siteId){ - SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); + SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); if(2 == roleType){ - siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_FACILITY_MONITORING); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 - if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); @@ -490,12 +552,12 @@ //获取当前登录账户的站点权限数据 Set<Integer> siteIds = new HashSet<>(); if(0 == query.getSiteId()){ - SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); - R<Integer> admin = sysUserClient.isAdmin(SecurityUtils.getUserId()); + SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); + R<Integer> admin = sysUserClient.isAdmin(tokenService.getLoginUser().getUserid()); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); if(2 == roleType){ - siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_FACILITY_MONITORING); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(admin.getData()!=1){ -- Gitblit v1.7.1