| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import com.ruoyi.scheduling.domian.SchedulingParam; |
| | | import com.ruoyi.sy.domain.ArdSyCarDay; |
| | | import com.ruoyi.sy.mapper.ArdSyCarDayMapper; |
| | | import com.ruoyi.utils.tools.GisTool; |
| | | import com.ruoyi.utils.websocket.util.WebSocketUtils; |
| | | import com.ruoyi.device.hiksdk.config.MinioClientSingleton; |
| | | import com.ruoyi.storage.minio.utils.MinioUtils; |
| | |
| | | import io.minio.Result; |
| | | import io.minio.http.Method; |
| | | import io.minio.messages.Item; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import okhttp3.OkHttpClient; |
| | | import okhttp3.Request; |
| | | import okhttp3.Response; |
| | |
| | | * @date 2023-06-26 |
| | | */ |
| | | @Service |
| | | @Slf4j(topic = "sy") |
| | | public class ArdSyCarServiceImpl implements IArdSyCarService { |
| | | @Resource |
| | | private ArdSyCarMapper ardSyCarMapper; |
| | |
| | | |
| | | @Resource |
| | | private SYClient sYClient; |
| | | |
| | | @Resource |
| | | RedisCache redisCache; |
| | | @Resource |
| | | private ArdSyCarDayMapper ardSyCarDayMapper; |
| | | |
| | |
| | | Map<String,String> map = new HashMap(); |
| | | map.put("carModel","sycar/" + item.objectName()); |
| | | switch(item.objectName()){ |
| | | case "carmodel/aodi.glb":map.put("carType","奥迪");break; |
| | | case "carmodel/baolai.glb":map.put("carType","宝来");break; |
| | | case "carmodel/bieke.glb":map.put("carType","别克");break; |
| | | case "carmodel/bus1.glb":map.put("carType","大客车");break; |
| | | case "carmodel/car.glb":map.put("carType","小型车");break; |
| | | case "carmodel/fire(1).glb":map.put("carType","消防车");break; |
| | | case "carmodel/fute.glb":map.put("carType","福特");break; |
| | | case "carmodel/jingche_a.glb":map.put("carType","警车");break; |
| | | case "carmodel/jiuhu.glb":map.put("carType","救护车");break; |
| | | case "carmodel/oil.glb":map.put("carType","油罐车");break; |
| | | case "carmodel/truck.glb":map.put("carType","工程用车");break; |
| | | case "carmodel/van1.glb":map.put("carType","大货车");break; |
| | | case "carmodel/aodi.glb": |
| | | map.put("carType", "奥迪"); |
| | | break; |
| | | case "carmodel/baolai.glb": |
| | | map.put("carType", "宝来"); |
| | | break; |
| | | case "carmodel/bieke.glb": |
| | | map.put("carType", "别克"); |
| | | break; |
| | | case "carmodel/bus1.glb": |
| | | map.put("carType", "大客车"); |
| | | break; |
| | | case "carmodel/car.glb": |
| | | map.put("carType", "小型车"); |
| | | break; |
| | | case "carmodel/fire(1).glb": |
| | | map.put("carType", "消防车"); |
| | | break; |
| | | case "carmodel/fute.glb": |
| | | map.put("carType", "福特"); |
| | | break; |
| | | case "carmodel/jingche_a.glb": |
| | | map.put("carType", "警车"); |
| | | break; |
| | | case "carmodel/jiuhu.glb": |
| | | map.put("carType", "救护车"); |
| | | break; |
| | | case "carmodel/oil.glb": |
| | | map.put("carType", "油罐车"); |
| | | break; |
| | | case "carmodel/truck.glb": |
| | | map.put("carType", "工程用车"); |
| | | break; |
| | | case "carmodel/van1.glb": |
| | | map.put("carType", "大货车"); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | |
| | | /** |
| | | * 根据用户获取三一列表 |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | |
| | | for(Map<String,String> m : list){ |
| | | switch (m.get("state")) { |
| | | case "1": |
| | | m.put("carState", "离线-从未报定位");break; |
| | | m.put("carState", "离线-从未报定位"); |
| | | break; |
| | | case "2": |
| | | m.put("carState", "离线-欠费");break; |
| | | m.put("carState", "离线-欠费"); |
| | | break; |
| | | case "3": |
| | | m.put("carState", "离线");break; |
| | | m.put("carState", "离线"); |
| | | break; |
| | | case "4": |
| | | m.put("carState", "离线-报警");break; |
| | | m.put("carState", "离线-报警"); |
| | | break; |
| | | case "5": |
| | | m.put("carState", "在线-从未报定位");break; |
| | | m.put("carState", "在线-从未报定位"); |
| | | break; |
| | | case "6": |
| | | m.put("carState", "在线-欠费");break; |
| | | m.put("carState", "在线-欠费"); |
| | | break; |
| | | case "7": |
| | | m.put("carState", "在线-行驶");break; |
| | | m.put("carState", "在线-行驶"); |
| | | break; |
| | | case "8": |
| | | m.put("carState", "在线-行驶-报警");break; |
| | | m.put("carState", "在线-行驶-报警"); |
| | | break; |
| | | case "9": |
| | | m.put("carState", "在线-停车-ACC关");break; |
| | | m.put("carState", "在线-停车-ACC关"); |
| | | break; |
| | | case "10": |
| | | m.put("carState", "在线-停车-ACC开");break; |
| | | m.put("carState", "在线-停车-ACC开"); |
| | | break; |
| | | case "11": |
| | | m.put("carState", "在线-停车-ACC关-报警");break; |
| | | m.put("carState", "在线-停车-ACC关-报警"); |
| | | break; |
| | | case "12": |
| | | m.put("carState", "在线-停车-ACC开-报警");break; |
| | | m.put("carState", "在线-停车-ACC开-报警"); |
| | | break; |
| | | case "13": |
| | | m.put("carState", "在线-无效定位");break; |
| | | m.put("carState", "在线-无效定位"); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | |
| | | /** |
| | | * 根据dept集合查询出所有对应的carId |
| | | * |
| | | * @param deptList |
| | | * @return |
| | | */ |
| | |
| | | return new HashMap(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取附近范围内的车辆信息 |
| | | */ |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getNearCar(SchedulingParam param) { |
| | | Double longitude = param.getLongitude(); |
| | | Double latitude = param.getLatitude(); |
| | | Integer radius = param.getSealingRadius(); |
| | | if (longitude == null && latitude == null) { |
| | | log.debug("原点坐标为空"); |
| | | return null; |
| | | } |
| | | if (radius == null) { |
| | | log.debug("半径距离为空"); |
| | | return null; |
| | | } |
| | | String userId = SecurityUtils.getUserId(); |
| | | ArdSyUser syUser = new ArdSyUser(); |
| | | syUser.setSysUserId(userId); |
| | | List<ArdSyUser> ardSyUserList = ardSyUserMapper.selectArdSyUserList(syUser); |
| | | if (ardSyUserList.size() == 0) { |
| | | log.debug("用户未挂接三一车辆"); |
| | | return null; |
| | | } |
| | | ArdSyUser ardSyUser = ardSyUserList.get(0); |
| | | String syUrl = redisCache.getCacheObject("sys_config:syCarPT"); |
| | | String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword()); |
| | | Map<String, Object> LogInResult = sYClient.logIn(syUrl, passwordMd5, ardSyUser.getUserId()); |
| | | String sessionId = (String) LogInResult.get("sessionId"); |
| | | |
| | | Map<String, Object> teamList = sYClient.getTeamList(syUrl, ardSyUser.getUserId(), sessionId); |
| | | List<Map<String, Object>> listMap = (List<Map<String, Object>>) teamList.get("list"); |
| | | List<Map<String, Object>> allList = new ArrayList<>(); |
| | | for (Map<String, Object> team : listMap) { |
| | | String teamId = (String) team.get("teamId"); |
| | | Map<String, Object> carListMap = sYClient.getCarList1(syUrl, teamId, ardSyUser.getUserId(), sessionId); |
| | | if (((String) carListMap.get("rspCode")).equals("1")) { |
| | | List<Map<String, Object>> list = (List<Map<String, Object>>) carListMap.get("list"); |
| | | allList.addAll(list); |
| | | } |
| | | } |
| | | //过滤在线车辆 |
| | | List<Map<String, Object>> onlineList = allList.stream() |
| | | .filter(map -> !"离线".equals(map.get("stateCn"))) |
| | | .collect(Collectors.toList()); |
| | | List<Map<String, Object>> filteredList = new ArrayList<>(); |
| | | //过滤半径 |
| | | for (Map<String, Object> carMap : onlineList) { |
| | | String carId = (String) carMap.get("carId"); |
| | | Map<String, Object> carGPSTrack = sYClient.getCarNearPositionByCarId(syUrl, carId, ardSyUser.getUserId(), sessionId); |
| | | List<Map<String, Object>> carGPSMap = (List<Map<String, Object>>) carGPSTrack.get("list"); |
| | | Double lng = Double.valueOf((String) carGPSMap.get(0).get("lng")); |
| | | Double lat = Double.valueOf((String) carGPSMap.get(0).get("lat")); |
| | | double distance = GisTool.getDistance( new double[]{longitude,latitude}, new double[]{lng, lat}); |
| | | if (distance <= radius) { |
| | | filteredList.add(carMap); // 将满足条件的车辆添加到筛选列表中 |
| | | } |
| | | } |
| | | return filteredList; |
| | | } |
| | | } |