xuhy
2025-01-07 9dc7bcc2a92f5b4143bbc814ace40bafb386a949
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.ruoyi.chargingPile.service.impl;
 
import com.alibaba.fastjson2.JSON;
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.feignClient.PartnerClient;
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.domain.SiteMenu;
import com.ruoyi.chargingPile.mapper.TFaultMessageMapper;
import com.ruoyi.chargingPile.service.*;
import com.ruoyi.common.core.constant.MsgConstants;
import com.ruoyi.common.core.utils.HttpUtils;
import com.ruoyi.common.core.utils.MsgUtil;
import com.ruoyi.common.core.web.page.PageInfo;
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.List;
import java.util.Set;
 
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author xiaochen
 * @since 2024-08-08
 */
@Slf4j
@Service
public class TFaultMessageServiceImpl extends ServiceImpl<TFaultMessageMapper, TFaultMessage> implements TFaultMessageService {
 
    @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<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, Integer siteId) {
        //校验合作商权限
        List<Integer> siteIds = new ArrayList<>();
        if(null == siteId || 0 == siteId){
            SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
            Integer roleType = sysUser.getRoleType();
            Integer objectId = sysUser.getObjectId();
            //合作商
            if(roleType == 2){
                Set<Integer> data = partnerService.authSite(objectId, SiteMenu.SITE_LIST);
                siteIds = new ArrayList<>(data);
            }else{
                //非管理员需要根据角色和用户配置查询允许的站点数据
                if(!SecurityUtils.isAdmin(SecurityUtils.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();
                    data.addAll(data1);
                    siteIds = data;
                }
            }
        }else{
            siteIds.add(siteId);
        }
        return this.baseMapper.getFaultMessageList(pageInfo, siteIds);
    }
}