package com.ruoyi.chargingPile.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendMessageDTO; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TFaultMessageMapper; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; /** *

* 服务实现类 *

* * @author xiaochen * @since 2024-08-08 */ @Slf4j @Service public class TFaultMessageServiceImpl extends ServiceImpl implements TFaultMessageService { @Resource private TokenService tokenService; @Autowired private ISiteService siteService; @Autowired private TChargingPileService chargingPileService; @Autowired private TChargingPileNotificationService chargingPileNotificationService; @Resource private SysUserClient sysUserClient; @Resource private IPartnerService partnerService; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; @Resource private SysUserRoleClient sysUserRoleClient; @Resource private AppUserClient appUserClient; @Override public void add(TFaultMessage dto) { // 故障短信提醒 Site site = siteService.getById(dto.getSiteId()); TChargingPile chargingPile = chargingPileService.getById(dto.getChargingPileId()); String siteName = site.getName(); // String reqStr = MsgUtil.faultMsg(site.getPhone(), site.getName(), chargingPile.getNumber() + ""); // String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr); SendMessageDTO sendMessageDTO = new SendMessageDTO(); sendMessageDTO.setPhone(site.getPhone()); sendMessageDTO.setSite(site.getName()); sendMessageDTO.setChargeGun(chargingPile.getNumber() + ""); sendMessageDTO.setType(3); String result = appUserClient.sendMessage(sendMessageDTO).getData(); log.info("故障短信提醒:{}",result); if(siteName.length()>10){ siteName = siteName.substring(0,10); } chargingPileNotificationService.saveData(4,dto.getSiteId(),dto.getChargingPileId(),site.getPhone(),"检测到"+siteName+"..."+chargingPile.getNumber()+"号桩设备离线,请及时查看处理!"); dto.setDownTime(LocalDateTime.now()); this.save(dto); } /** * 获取故障信息列表 * @param pageInfo * @param siteId * @return */ @Override public List getFaultMessageList(PageInfo pageInfo, Integer siteId, Integer partnerId, Integer partnerType, Integer alarmType) { if (alarmType != null && alarmType != 1) { return Collections.emptyList(); } //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); List siteIds = new ArrayList<>(); if(null == siteId || 0 == siteId){ //合作商 if(roleType == 2){ Set data = partnerService.authSite(objectId, SiteMenu.FAULT_INFORMATION_LIST); siteIds = new ArrayList<>(data); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ List data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); siteIds = data; } } }else{ siteIds.add(siteId); } List faultMessageList = this.baseMapper.getFaultMessageList(pageInfo, siteIds, partnerId, partnerType); for (TFaultMessage faultMessage : faultMessageList) { faultMessage.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, faultMessage.getSiteId(), SiteMenu.FAULT_INFORMATION_LIST_DEL)); } return faultMessageList; } }