zhangnaisong
2024-01-29 dec2e65f7d3917e8843564dc26184f9be7c48af3
ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java
@@ -2,7 +2,10 @@
import java.util.*;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.utils.websocket.util.WebSocketUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -14,6 +17,9 @@
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.websocket.Session;
import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
/**
 * 单兵端申请查看指挥端位置或三一车辆位置Service业务层处理
@@ -25,6 +31,9 @@
public class ArdAppApplicationServiceImpl implements IArdAppApplicationService {
    @Resource
    private ArdAppApplicationMapper ardAppApplicationMapper;
    @Resource
    private SysRoleMapper sysRoleMapper;
    private Map<String,Thread> threadMap = new HashMap();
@@ -182,6 +191,23 @@
                resultSingle = ardAppApplicationMapper.insertArdAppApplication(ardAppApplication);
                result = result + resultSingle;
            }
            //加入给pc端websocket转发
            List<SysRole> sysRoleList = sysRoleMapper.selectRolePermissionByUserId(commanderId);
            for(SysRole sysRole : sysRoleList){
                if(!sysRole.getRoleKey().equals("appLeader")){
                    Map<String,Object> resultMap = ardAppApplicationMapper.selectSYCarApplicationByPCIdAndSoilderId(commanderId,usersId);
                    Map<String,Map<String,Object>> msg = new HashMap();
                    msg.put("60000",resultMap);
                    for(String id : ONLINE_USER_SESSIONS.keySet()){
                        if(id.startsWith(commanderId)){
                            Session session = ONLINE_USER_SESSIONS.get(id);
                            WebSocketUtils.sendMessage(session,msg);
                            break;
                        }
                    }
                    break;//一个pc端用户可能挂接多个角色,每个pc端只转发一次
                }
            }
        }
        return result;
    }