From ed71767fdb228c6dc154e585756fb8afb7f531d7 Mon Sep 17 00:00:00 2001 From: zhangnaisong <2434969829@qq.com> Date: 星期六, 22 七月 2023 17:31:25 +0800 Subject: [PATCH] 三一车辆实时位置提交 --- ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 221 insertions(+), 2 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java index dc8b3e4..88fd800 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.sy.service.impl; +import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -7,20 +8,37 @@ 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.system.service.ISysConfigService; import com.ruoyi.utils.httpclient.SYCarClient; -import org.springframework.beans.factory.annotation.Autowired; +import com.ruoyi.utils.result.Constants; +import com.ruoyi.utils.result.Results; +import io.minio.GetPresignedObjectUrlArgs; +import io.minio.ListObjectsArgs; +import io.minio.PutObjectArgs; +import io.minio.Result; +import io.minio.http.Method; +import io.minio.messages.Contents; +import io.minio.messages.Item; import org.springframework.stereotype.Service; import com.ruoyi.sy.mapper.ArdSyCarMapper; import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.service.IArdSyCarService; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; + +import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS; /** * 涓変竴杞﹁締Service涓氬姟灞傚鐞� @@ -38,6 +56,10 @@ @Resource private ArdSyUserMapper ardSyUserMapper; + + @Resource + private SysUserMapper userMapper; + /** * 鏌ヨ涓変竴杞﹁締 @@ -91,6 +113,14 @@ */ @Override public int deleteArdSyCarByIds(String[] ids) { + List<ArdSyCar> result = ardSyCarMapper.selectArdSyCarByIds(ids); + List<String> objectNames = new ArrayList(); + for(ArdSyCar ardSyCar : result){ + if(ardSyCar.getCarPicture() != null && !ardSyCar.getCarPicture().equals("")){ + objectNames.add(ardSyCar.getCarPicture().split("/sycar/")[1]); + } + } + MinioUtils.removeObjects("sycar", objectNames); return ardSyCarMapper.deleteArdSyCarByIds(ids); } @@ -159,4 +189,193 @@ } } } + + @Override + public Map<String, Object> getArdSyCarAll(String userId) { + SysConfig config = new SysConfig(); + config.setConfigKey("syCarPT"); + List<SysConfig> sysConfigResult = sysConfigMapper.selectConfigList(config); + String syURL = ""; + Map<String,Object> result = new HashMap(); + if(sysConfigResult.size() == 0){ + result.put("data","涓変竴杞﹁締url娌℃湁褰曞叆"); + result.put("code","500"); + return result; + }else{ + syURL = sysConfigResult.get(0).getConfigValue(); + ArdSyUser ardSyUserPara = new ArdSyUser(); + ardSyUserPara.setSysUserId(userId); + List<ArdSyUser> ardSyUserList = ardSyUserMapper.selectArdSyUserList(ardSyUserPara); + if(ardSyUserList.size() == 0){ + result.put("data","鐢ㄦ埛鏈寕鎺ヤ笁涓�杞﹁締"); + result.put("code","500"); + return result; + }else{ + ArdSyUser ardSyUser = ardSyUserList.get(0); + Map<String,Object> LogInResult = SYCarClient.logIn(syURL,ardSyUser.getUserId(), ardSyUser.getPassword()); + String sessionId = (String) LogInResult.get("sessionId"); + Map<String,Object> carListMap = SYCarClient.getCarList(syURL,sessionId); + if(((String)carListMap.get("rspCode")).equals("1")){ + List<Map<String,Object>> list = (List<Map<String,Object>>) carListMap.get("list"); + /*ArdSyCar ardSyCar = new ArdSyCar(); + List<ArdSyCar> ardSyCarList = ardSyCarMapper.selectArdSyCarList(ardSyCar); + List<String> carIdList = new ArrayList(); + for(ArdSyCar innerArdSyCar : ardSyCarList){ + carIdList.add(innerArdSyCar.getCarId()); + } + + List<Map<String,Object>> carList = list.stream().filter(new Predicate<Map<String,Object>>(){ + @Override + public boolean test(Map<String,Object> map) { + return !carIdList.contains((String)map.get("carId")); + } + }).collect(Collectors.toList()); + result.put("data",carList);*/ + result.put("data",list); + result.put("code","200"); + return result; + }else{ + result.put("data","涓変竴杞﹁締骞冲彴鍑洪敊"); + result.put("code","500"); + return result; + } + } + } + } + + @Override + public List<Map<String,String>> getAllCarModel() { + boolean exsit = MinioUtils.exitsBucket("sycar"); + if (exsit) { + List<Map<String,String>> listObjetcName = new ArrayList<>(); + try { + ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix("carmodel/").bucket("sycar").build(); + Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs); + for (Result<Item> result : myObjects) { + Item item = result.get(); + 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; + default: + break; + } + listObjetcName.add(map); + } + return listObjetcName; + } catch (Exception ex) { + //log.error("minio鑾峰彇妗朵笅瀵硅薄寮傚父锛�" + ex.getMessage()); + } + } + return null; + } + + @Override + public String uploadCarPicture(String id, MultipartFile carPicture) { + if(id != null && !id.equals("")){//id涓洪潪蹇呰 + ArdSyCar ardSyCarr = ardSyCarMapper.selectArdSyCarById(id); + List<String> objectNames = new ArrayList(); + if(ardSyCarr.getCarPicture() != null || !ardSyCarr.getCarPicture().equals("")){ + String objectName = ardSyCarr.getCarPicture().split("/sycar/")[1]; + objectNames.add(objectName); + MinioUtils.removeObjects("sycar", objectNames); + } + } + //鍒ゆ柇鏂囦欢鏄惁涓虹┖ + if (null == carPicture || 0 == carPicture.getSize()) { + return ""; + } + boolean exsit = MinioUtils.exitsBucket("sycar"); + if (!exsit) { + boolean bucket = MinioUtils.createBucket("sycar"); + } + //鏂囦欢鍚� + String originalFilename = carPicture.getOriginalFilename(); + //鏂扮殑鏂囦欢鍚� + String fileName = "carpicture/" + IdUtils.fastSimpleUUID()+"_"+ originalFilename; + try { + InputStream inputStream = carPicture.getInputStream(); + /*涓婁紶瀵硅薄*/ + PutObjectArgs putObjectArgs = PutObjectArgs + .builder() + .bucket("sycar") + .object(fileName) + .stream(inputStream, carPicture.getSize(), -1) + .contentType(carPicture.getContentType()) + .build(); + MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + inputStream.close(); + /*鑾峰彇url*/ + GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs + .builder() + .bucket("sycar") + .object(fileName) + .method(Method.GET) + .build(); + String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); + if(id != null && !id.equals("")){//id涓洪潪蹇呰 + ArdSyCar ardSyCar = new ArdSyCar(); + ardSyCar.setId(id); + ardSyCar.setCarPicture(ObjectUrl); + ardSyCarMapper.updateArdSyCar(ardSyCar); + } + return ObjectUrl; + } catch (Exception ex) { + return ""; + } + } + +// @Override +// public List<ArdSyCar> getArdSyCarWithRightByCarIdList(List<String> carIdList) { +// List<ArdSyCar> result = ardSyCarMapper.getArdSyCarWithRightByCarIdList(carIdList); +// return result; +// } + + + @Override + public Results carListById(String id) { + try { + List<ArdSyCar> list = ardSyCarMapper.carListById(id); + if(list.size()>0){ + ArdSyCar ardSyCar = list.get(0); + return Results.succeed(ardSyCar); + }else { + return Results.succeed(); + } + } catch (Exception e) { + return Results.error(e.toString()); + } + } + + @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); + System.out.println("/////////////"); + System.out.println(PositionContainer.getDeptPositionMap()); + Map<Integer,Object> data = new HashMap(); + data.put(30000, map.values()); + WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data)); + } + } } -- Gitblit v1.9.3