zhangnaisong
2023-07-22 c511bd724b1a34411b8e28116bbc5baf9353a03d
三一车辆sdk引入提交
已添加2个文件
已修改6个文件
327 ■■■■■ 文件已修改
ard-work/pom.xml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImpl.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyUserMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/IArdSyUserService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyUserServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/sy/ArdSyUserMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/pom.xml
@@ -123,7 +123,57 @@
            <artifactId>fastjson2</artifactId>
            <version>2.0.36</version>
        </dependency>
        <!--三一车辆依赖-->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.35</version>
        </dependency>
        <dependency>
            <groupId>com.sy</groupId>
            <artifactId>gps-push-client</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-jcl</artifactId>
            <version>2.11.2</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.63.Final</version>
        </dependency>
    </dependencies>
    <build>
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -4,6 +4,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -12,6 +13,7 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.sy.domain.ArdSyUser;
import com.ruoyi.sy.gps31.PushClientImplPosition;
import com.ruoyi.sy.service.IArdSyUserService;
import com.ruoyi.sy.service.SysParaService;
import com.ruoyi.system.domain.SysConfig;
@@ -60,6 +62,31 @@
    @Autowired
    private IArdSyUserService iArdSyUserService;
    private ArdSyCarController ardSyCarController;
    @PostConstruct
    public void init(){
        ardSyCarController = this;
        ardSyCarController.sysConfigService = this.sysConfigService;
        ardSyCarController.iArdSyUserService = this.iArdSyUserService;
        SysConfig config = new SysConfig();
        config.setConfigKey("syCarPT");
        List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config);
        String syURL = "";
        if(sysConfigResult.size() == 0){
            return;
        }else{
            syURL = sysConfigResult.get(0).getConfigValue();
        }
        String ip = syURL.split(":")[1].replace("//", "");
        List<ArdSyUser> ardSyUserList = iArdSyUserService.selectSyUser();
        //车辆实时位置线程
        PushClientImplPosition pushClientImplPosition = new PushClientImplPosition(ip,ardSyUserList.get(0).getUserId(),ardSyUserList.get(0).getPassword());
        Thread pushClientImplPositionThread = new Thread(pushClientImplPosition);
        pushClientImplPositionThread.start();
    }
    /**
     * æŸ¥è¯¢ä¸‰ä¸€è½¦è¾†åˆ—表
     */
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
/**
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * <p>Company: www.31gps.net</p>
 * @author chencq
 * @version 1.0
 */
package com.ruoyi.sy.gps31;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson2.JSON;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.gps31.push.netty.PushClient;
import com.gps31.push.netty.PushMsg;
import com.gps31.push.netty.client.TcpClient;
import com.gps31.push.util.MapUtil;
/**
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * <p>Company: www.31gps.net</p>
 * @author chencq
 * @version 1.0
 */
public class PushClientImpl extends PushClient{
    private static final Log log = LogFactory.getLog(PushClientImpl.class);
    @Override
    public void messageReceived(TcpClient tcpClient, PushMsg pushMsg)
            throws Exception {
        if("8001".equals(pushMsg.getCmd())) {//登录应答
            String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
            if("0".equals(rspResult)) {//登录成功,定阅动态消息
                Map<String,Object> map = new HashMap<String,Object>();
                map.put("seq", "1");
                map.put("action", "add");
                map.put("msgIds", JSON.toJSONString(getSubCmdSet()));
                PushMsg subMsg = getInstance("0003",map);
                sendMsg(subMsg);
            }
        }else if("8002".equals(pushMsg.getCmd())){//心跳应答
        }else if("8003".equals(pushMsg.getCmd())){//订阅动态消息应答
            String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
            log.error(String.format("    è®¢é˜…应答:%s", "0".equals(rspResult)?"成功":"失败"));
        }else if("0200".equals(pushMsg.getCmd())) {//定位信息
            Map<String,Object> gpsMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(gpsMap, "carName","");//获取车牌号
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(new Date()));
            log.error(String.format("   ---->收到定位数据:%s",JSON.toJSONString(gpsMap)));
            /**
             *
             * è¯·åŠ å…¥ä¸‰æ–¹é›†æˆæ–¹çš„ä¸šåŠ¡é€»è¾‘
             *
             */
        }else if("0300".equals(pushMsg.getCmd())) {//报警消息
            Map<String,Object> alarmMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(alarmMap, "carName","");//获取车牌号
            log.error(String.format("   ---->收到报警数据:%s",JSON.toJSONString(alarmMap)));
            /**
             *
             * è¯·åŠ å…¥ä¸‰æ–¹é›†æˆæ–¹çš„ä¸šåŠ¡é€»è¾‘
             *
             */
        }else if("0401".equals(pushMsg.getCmd())) {//透传消息
            Map<String,Object> dataMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(dataMap, "carName","");//获取车牌号
            log.error(String.format("   ---->收到透传数据:%s",JSON.toJSONString(dataMap)));
            /**
             *
             * è¯·åŠ å…¥ä¸‰æ–¹é›†æˆæ–¹çš„ä¸šåŠ¡é€»è¾‘
             *
             */
        }
    }
    public static void main(String[] args) {
        try {
            PushClientImpl client = new PushClientImpl();
            client.setLog(true);//是否打印明文
            //client.setLogBytes(true);//是否打印网络字节流
            //client.setHost("106.14.186.44");//服务器IP
            client.setHost("116.182.15.14");//服务器IP
            client.setPort(10100);//服务器端口
            //client.setUserName("ys_admin");//系统用户名
            //client.setPwd("123456");//系统用户密码
            //client.setUserName("admin_dqard");//系统用户名
            //client.setUserName("dqard");//系统用户名
            //client.setPwd("123456");//系统用户密码
            client.setUserName("admin");//系统用户名
            client.setPwd("654321");//系统用户密码
            //client.setSubMsgIds("0200|0300");//订阅的动态消息,多个动态消息使用|辟分,当前示例是订阅  å®šä½æ¶ˆæ¯(0x0200)和报警消息(0x0300)
            client.setSubMsgIds("0200");//订阅的动态消息,多个动态消息使用|辟分,当前示例是订阅  å®šä½æ¶ˆæ¯(0x0200)和报警消息(0x0300)
            client.setDesc("测试客户端");//客户端的描述,
            client.start();
            while(true) {
                Thread.sleep(1000);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
/**
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * <p>Company: www.31gps.net</p>
 * @author chencq
 * @version 1.0
 */
package com.ruoyi.sy.gps31;
import com.alibaba.fastjson2.JSON;
import com.gps31.push.netty.PushClient;
import com.gps31.push.netty.PushMsg;
import com.gps31.push.netty.client.TcpClient;
import com.gps31.push.util.MapUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * <p>Company: www.31gps.net</p>
 * @author chencq
 * @version 1.0
 */
public class PushClientImplPosition extends PushClient implements Runnable {
    private static final Log log = LogFactory.getLog(PushClientImplPosition.class);
    private String ip;
    private String userId;
    private String password;
    public PushClientImplPosition(String ip, String userId, String password) {
        this.ip = ip;
        this.userId = userId;
        this.password = password;
    }
    public PushClientImplPosition() {
    }
    @Override
    public void messageReceived(TcpClient tcpClient, PushMsg pushMsg)
            throws Exception {
        if("8001".equals(pushMsg.getCmd())) {//登录应答
            String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
            if("0".equals(rspResult)) {//登录成功,定阅动态消息
                Map<String,Object> map = new HashMap<String,Object>();
                map.put("seq", "1");
                map.put("action", "add");
                map.put("msgIds", JSON.toJSONString(getSubCmdSet()));
                PushMsg subMsg = getInstance("0003",map);
                sendMsg(subMsg);
            }
        }else if("8002".equals(pushMsg.getCmd())){//心跳应答
        }else if("8003".equals(pushMsg.getCmd())){//订阅动态消息应答
            String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
            log.error(String.format("    è®¢é˜…应答:%s", "0".equals(rspResult)?"成功":"失败"));
        }else if("0200".equals(pushMsg.getCmd())) {//定位信息
            Map<String,Object> gpsMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(gpsMap, "carName","");//获取车牌号
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(new Date()));
            log.error(String.format("   ---->收到定位数据:%s",JSON.toJSONString(gpsMap)));
            /**
             *
             * è¯·åŠ å…¥ä¸‰æ–¹é›†æˆæ–¹çš„ä¸šåŠ¡é€»è¾‘
             *
             */
        }else if("0300".equals(pushMsg.getCmd())) {//报警消息
            Map<String,Object> alarmMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(alarmMap, "carName","");//获取车牌号
            log.error(String.format("   ---->收到报警数据:%s",JSON.toJSONString(alarmMap)));
            /**
             *
             * è¯·åŠ å…¥ä¸‰æ–¹é›†æˆæ–¹çš„ä¸šåŠ¡é€»è¾‘
             *
             */
        }else if("0401".equals(pushMsg.getCmd())) {//透传消息
            Map<String,Object> dataMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(dataMap, "carName","");//获取车牌号
            log.error(String.format("   ---->收到透传数据:%s",JSON.toJSONString(dataMap)));
            /**
             *
             * è¯·åŠ å…¥ä¸‰æ–¹é›†æˆæ–¹çš„ä¸šåŠ¡é€»è¾‘
             *
             */
        }
    }
    public void sendMassage() {
        try {
            PushClientImplPosition client = new PushClientImplPosition();
            client.setLog(true);//是否打印明文
            client.setHost(this.ip);//服务器IP
            client.setPort(10100);//服务器端口
            client.setUserName(this.userId);//系统用户名
            client.setPwd(this.password);//系统用户密码
            client.setSubMsgIds("0200");//订阅的动态消息,多个动态消息使用|辟分,当前示例是订阅  å®šä½æ¶ˆæ¯(0x0200)和报警消息(0x0300)
            client.setDesc("测试客户端");//客户端的描述,
            client.start();
            while(true) {
                Thread.sleep(1000);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Override
    public void run() {
        sendMassage();
    }
}
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyUserMapper.java
@@ -81,4 +81,6 @@
    Map<String,Object> selectArdSyUserByUsersId(Integer usersId);
    ArdSyUser userById(String id);
    public List<ArdSyUser> selectSyUser();
}
ard-work/src/main/java/com/ruoyi/sy/service/IArdSyUserService.java
@@ -77,4 +77,9 @@
    Map<String,Object> selectArdSyUserByUsersId(Integer usersId);
    ArdSyUser userById(String id);
    /**
     * æŸ¥è¯¢æœªæŒ‚接三一车辆账号密码
     */
    public List<ArdSyUser> selectSyUser();
}
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyUserServiceImpl.java
@@ -126,4 +126,10 @@
    public ArdSyUser userById(String id) {
        return ardSyUserMapper.userById(id);
    }
    @Override
    public List<ArdSyUser> selectSyUser() {
        List<ArdSyUser> result = ardSyUserMapper.selectSyUser();
        return result;
    }
}
ard-work/src/main/resources/mapper/sy/ArdSyUserMapper.xml
@@ -137,4 +137,7 @@
        <include refid="selectArdSyUserVo"/>
        where sys_user_id = #{id}
    </select>
    <select id="selectSyUser" resultMap="ArdSyUserResult">
        select distinct asu.user_id,asu.password from ard_sy_user asu
    </select>
</mapper>