ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -1,9 +1,6 @@ package com.ruoyi.sy.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -18,6 +15,8 @@ import com.ruoyi.sy.service.SysParaService; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.utils.httpclient.SYCarClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,6 +35,8 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; /** * ä¸ä¸è½¦è¾Controller @@ -85,6 +86,15 @@ PushClientImplPosition pushClientImplPosition = new PushClientImplPosition(ip,ardSyUserList.get(0).getUserId(),ardSyUserList.get(0).getPassword()); Thread pushClientImplPositionThread = new Thread(pushClientImplPosition); pushClientImplPositionThread.start(); Date date = new Date(); Timer carPositionTimer = new Timer();//宿¶æ¨é宿¶ä½ç½® TimerTask carPositionTask =new TimerTask(){ public void run(){ ardSyCarService.sendArdSyCarPosition(); } }; carPositionTimer.scheduleAtFixedRate(carPositionTask,date,3*1000);//å¯ç¨ } /** ard-work/src/main/java/com/ruoyi/sy/gps31/PositionContainer.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.sy.gps31; import java.util.HashMap; import java.util.List; import java.util.Map; public class PositionContainer { private static Map<String, Map<String,Map<String,Object>>> deptPositionMap = new HashMap();//ä¾é¨é¨åæ¾å®æ½è½¦è¾ä½ç½®:deptIdï¼carIdï¼è½¦è¾ä½ç½® public static Map<String, Map<String, Map<String,Object>>> getDeptPositionMap() { return deptPositionMap; } public static void setDeptPositionMap(Map<String, Map<String, Map<String,Object>>> deptPositionMap) { PositionContainer.deptPositionMap = deptPositionMap; } } ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -12,6 +12,8 @@ import com.gps31.push.netty.PushMsg; import com.gps31.push.netty.client.TcpClient; import com.gps31.push.util.MapUtil; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.sy.service.impl.ArdSyCarServiceImpl; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -64,13 +66,46 @@ }else if("8003".equals(pushMsg.getCmd())){//订é å¨ææ¶æ¯åºç String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1"); log.error(String.format(" 订é åºç:%s", "0".equals(rspResult)?"æå":"失败")); //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","");//è·å车çå· /*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))); log.error(String.format(" ---->æ¶å°å®ä½æ°æ®:%s",JSON.toJSONString(gpsMap)));*/ String carId = (String)gpsMap.get("carId"); Map<String,Object> result = ((ArdSyCarServiceImpl)SpringUtils.getBean("ardSyCarServiceImpl")).getArdSyCarAndDeptByCarId(carId);//æ¥è¯¢è½¦è¾åé¨é¨ gpsMap.putAll(result); String ancestors = (String) gpsMap.get("ancestors");//è·åç¶çº§é¨é¨ String[] ancestorsArray = ancestors.split(","); if(ancestorsArray.length == 1){//æé«çº§é¨é¨ String deptId = String.valueOf(gpsMap.get("deptId")); Map<String,Map<String,Object>> deptMap = PositionContainer.getDeptPositionMap().get(deptId); if(deptMap == null){ deptMap = new HashMap(); } deptMap.put((String)gpsMap.get("carId"),gpsMap);//馿¬¡å å ¥å®¹å¨ï¼å次å»é PositionContainer.getDeptPositionMap().put(deptId,deptMap); }else{ //å å ¥æ¬é¨é¨å®¹å¨ String deptId = String.valueOf(gpsMap.get("deptId")); Map<String,Map<String,Object>> deptMap = PositionContainer.getDeptPositionMap().get(deptId); if(deptMap == null){ deptMap = new HashMap(); } deptMap.put((String)gpsMap.get("carId"),gpsMap);//馿¬¡å å ¥å®¹å¨ï¼å次å»é PositionContainer.getDeptPositionMap().put(deptId,deptMap); //å å ¥ç¶çº§é¨é¨å®¹å¨ for(int i = 1;i <= ancestorsArray.length - 1;i++){ String deptIdp = String.valueOf(gpsMap.get(ancestorsArray[i])); Map<String,Map<String,Object>> deptMapp = PositionContainer.getDeptPositionMap().get(deptIdp); if(deptMapp == null){ deptMapp = new HashMap(); } deptMapp.put((String)gpsMap.get("carId"),gpsMap);//馿¬¡å å ¥å®¹å¨ï¼å次å»é PositionContainer.getDeptPositionMap().put(deptIdp,deptMap); } } /** * * 请å å ¥ä¸æ¹éææ¹çä¸å¡é»è¾ @@ -79,7 +114,7 @@ }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))); //log.error(String.format(" ---->æ¶å°æ¥è¦æ°æ®:%s",JSON.toJSONString(alarmMap))); /** * * 请å å ¥ä¸æ¹éææ¹çä¸å¡é»è¾ @@ -88,7 +123,7 @@ }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))); //log.error(String.format(" ---->æ¶å°éä¼ æ°æ®:%s",JSON.toJSONString(dataMap))); /** * * 请å å ¥ä¸æ¹éææ¹çä¸å¡é»è¾ @@ -100,7 +135,7 @@ public void sendMassage() { try { PushClientImplPosition client = new PushClientImplPosition(); client.setLog(true);//æ¯å¦æå°ææ client.setLog(false);//æ¯å¦æå°ææ client.setHost(this.ip);//æå¡å¨IP client.setPort(10100);//æå¡å¨ç«¯å£ client.setUserName(this.userId);//ç³»ç»ç¨æ·å ard-work/src/main/java/com/ruoyi/sy/mapper/ArdSyCarMapper.java
@@ -1,6 +1,8 @@ package com.ruoyi.sy.mapper; import java.util.List; import java.util.Map; import com.ruoyi.sy.domain.ArdSyCar; /** @@ -73,4 +75,9 @@ * @return */ List<ArdSyCar> carListById(String id); /** * æ ¹æ®è½¦è¾idæ¥è¯¢ä¸ä¸è½¦è¾å对åºé¨é¨ */ public Map<String, Object> getArdSyCarAndDeptByCarId(String carId); } ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java
@@ -83,4 +83,14 @@ public String uploadCarPicture(String id, MultipartFile carPicture); List<ArdSyCar> carListById(String id); /** * æ ¹æ®è½¦è¾idæ¥è¯¢ä¸ä¸è½¦è¾å对åºé¨é¨ */ public Map<String,Object> getArdSyCarAndDeptByCarId(String carId); /** * æ ¹æ®é¨é¨åé车è¾å®æ¶ä½ç½® */ public void sendArdSyCarPosition(); } ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -8,13 +8,18 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import com.alibaba.fastjson.JSON; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.common.websocket.util.WebSocketUtils; import com.ruoyi.device.hiksdk.config.MinioClientSingleton; import com.ruoyi.device.hiksdk.util.minio.MinioUtils; import com.ruoyi.sy.domain.ArdSyUser; import com.ruoyi.sy.gps31.PositionContainer; import com.ruoyi.sy.mapper.ArdSyUserMapper; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.utils.httpclient.SYCarClient; import io.minio.GetPresignedObjectUrlArgs; import io.minio.ListObjectsArgs; @@ -29,6 +34,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; /** * ä¸ä¸è½¦è¾Serviceä¸å¡å±å¤ç @@ -46,6 +53,9 @@ @Resource private ArdSyUserMapper ardSyUserMapper; @Resource private SysUserMapper userMapper; /** @@ -324,8 +334,30 @@ } } @Override public List<ArdSyCar> carListById(String id) { return ardSyCarMapper.carListById(id); } @Override public Map<String, Object> getArdSyCarAndDeptByCarId(String carId) { Map<String, Object> result = ardSyCarMapper.getArdSyCarAndDeptByCarId(carId); return result; } @Override public void sendArdSyCarPosition() { for(String key : ONLINE_USER_SESSIONS.keySet()){ SysUser sysUser = userMapper.selectUserById(key); String deptId = String.valueOf(sysUser.getDeptId()); Map<String,Map<String,Object>> map = PositionContainer.getDeptPositionMap().get(deptId); List<Map<String,Object>> positionList = (List<Map<String, Object>>) map.values(); if(positionList.size() != 0){ Map<Integer,Object> data = new HashMap(); data.put(30000,positionList); WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(positionList)); } } } } ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml
@@ -105,4 +105,12 @@ <select id="carListById" parameterType="String" resultMap="ArdSyCarResult"> select * from ard_sy_car where id = #{id} </select> <select id="getArdSyCarAndDeptByCarId" parameterType="String" resultType="java.util.Map"> select asc0.id,asc0.car_id as "carId",coalesce(asc0.car_model,'') as "carModel", coalesce(asc0.car_type,'') as "carType",coalesce(asc0.car_brand,'') as "carBrand", asc0.dept_id as "deptId",asc0.car_picture as "carPicture",sd.ancestors, sd.dept_name as "deptName" from ard_sy_car asc0 inner join sys_dept sd on asc0.dept_id = sd.dept_id where asc0.car_id = #{carId} </select> </mapper>