From 85681b3f89d2287b948870f79a2eef780480b6a7 Mon Sep 17 00:00:00 2001 From: Administrator <1144154118@qq.com> Date: 星期二, 08 八月 2023 11:02:53 +0800 Subject: [PATCH] 日子返回格式 --- ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 190 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 189 insertions(+), 1 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 efec4be..eb3fa5c 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,7 +1,12 @@ package com.ruoyi.sy.service.impl; +import java.io.IOException; import java.io.InputStream; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -9,9 +14,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.sy.domain.ArdSyCarDay; +import com.ruoyi.sy.mapper.ArdSyCarDayMapper; import com.ruoyi.utils.websocket.util.WebSocketUtils; import com.ruoyi.device.hiksdk.config.MinioClientSingleton; -import com.ruoyi.device.hiksdk.util.minio.MinioUtils; +import com.ruoyi.storage.minio.utils.MinioUtils; import com.ruoyi.sy.domain.ArdSyUser; import com.ruoyi.sy.gps31.PositionContainer; import com.ruoyi.sy.mapper.ArdSyUserMapper; @@ -26,6 +33,10 @@ import io.minio.Result; import io.minio.http.Method; import io.minio.messages.Item; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.stereotype.Service; import com.ruoyi.sy.mapper.ArdSyCarMapper; @@ -59,6 +70,9 @@ @Resource private SYClient sYClient; + + @Resource + private ArdSyCarDayMapper ardSyCarDayMapper; private Map<Integer,Map<String,String>> logInMap = new HashMap(); @@ -788,4 +802,178 @@ return Results.error("杩借釜澶辫触"); } } + + /*@Override + public Results getExistTraceByCarIdAndMonth(String userId, String carId, String time) { + SysConfig config = new SysConfig(); + config.setConfigKey("syCarPT"); + List<SysConfig> sysConfigResult = sysConfigMapper.selectConfigList(config); + String syURL = ""; + if(sysConfigResult.size() == 0){ + return Results.succeed("涓変竴杞﹁締url娌℃湁褰曞叆"); + }else{ + syURL = sysConfigResult.get(0).getConfigValue(); + ArdSyUser ardSyUserPara = new ArdSyUser(); + ardSyUserPara.setSysUserId(userId); + List<ArdSyUser> ardSyUserList = ardSyUserMapper.selectArdSyUserList(ardSyUserPara); + if(ardSyUserList.size() == 0){ + return Results.succeed("鐢ㄦ埛鏈寕鎺ヤ笁涓�杞﹁締"); + }else{ + ArdSyUser ardSyUser = ardSyUserList.get(0); + String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword()); + Map<String,Integer> existTraceMap = getExistTraceByCarIdAndMonth(syURL,ardSyUser.getUserId(),passwordMd5,carId,time); + return Results.succeed(existTraceMap); + } + } + }*/ + + @Override + public Results getExistTraceByCarIdAndMonth(String userId, String carId, String time) { + List<ArdSyCarDay> result = ardSyCarDayMapper.selectArdSyCarDayByCarIdAndDay(carId,time + "%"); + List<String> list = new ArrayList(); + for(ArdSyCarDay ardSyCarDay : result){ +// list.add(ardSyCarDay.getDay().split("-")[2]); + list.add(ardSyCarDay.getDay()); + } + return Results.succeed(list); + } + + public Map<String,Integer> getExistTraceByCarIdAndMonth(String url,String usersId,String password,String carId,String time){ + Map<String,Object> LogInResult = sYClient.logIn(url,password,usersId); + String sessionId = (String) LogInResult.get("sessionId"); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Date date = null; + try { + date = sdf.parse(time); + } catch (ParseException e) { + e.printStackTrace(); + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//鑾峰彇璇ユ湀澶╂暟 + Map<String,Integer> existTraceMap = new HashMap(); + ExecutorService newCachedThreadPoll = Executors.newCachedThreadPool(); + for (int i = 1; i <= maxDay; i = i + 7) { + int temp = i; + String finalTime = time.replace("-",""); + String finalsyURL = url; + newCachedThreadPoll.execute(new Runnable(){ + @Override + public void run() { + int temp0 = temp + 6; + if(temp0 > maxDay){ + temp0 = maxDay; + } + for (int j = temp; j <= temp0; j++) { + if(j <= 9){ + existTraceMap.put("0" + String.valueOf(j), -1); + }else{ + existTraceMap.put(String.valueOf(j), -1); + } + } + if(temp <= 9){ + if(temp0 <= 9){ + String startTime = finalTime + "0" + temp + "000000"; + String endTime = finalTime + "0" + temp0 + "235959"; + Map<String,Object> result = getCarGPSTrack(finalsyURL,carId,startTime,endTime,sessionId); + String rspCode = (String)result.get("rspCode"); + if(rspCode.equals("1")){ + List<Map<String,Object>> list = (List<Map<String, Object>>) result.get("list"); + for(Map<String,Object> m : list){ + String time = (String) m.get("time"); + time = time.split(" ")[0]; + time = time.split("-")[2]; + existTraceMap.put(time, 1); + } + } + }else{ + String startTime = finalTime + "0" + temp + "000000"; + String endTime = finalTime + temp0 + "235959"; + Map<String,Object> result = getCarGPSTrack(finalsyURL,carId,startTime,endTime,sessionId); + String rspCode = (String)result.get("rspCode"); + if(rspCode.equals("1")){ + List<Map<String,Object>> list = (List<Map<String, Object>>) result.get("list"); + for(Map<String,Object> m : list){ + String time = (String) m.get("time"); + time = time.split(" ")[0]; + time = time.split("-")[2]; + existTraceMap.put(time, 1); + } + } + } + }else{ + String startTime = finalTime + temp + "000000"; + String endTime = finalTime + temp0 + "235959"; + Map<String,Object> result = getCarGPSTrack(finalsyURL,carId,startTime,endTime,sessionId); + String rspCode = (String)result.get("rspCode"); + if(rspCode.equals("1")){ + List<Map<String,Object>> list = (List<Map<String, Object>>) result.get("list"); + for(Map<String,Object> m : list){ + String time = (String) m.get("time"); + time = time.split(" ")[0]; + time = time.split("-")[2]; + existTraceMap.put(time, 1); + } + } + } + for(int j = temp; j <= temp0; j++){ + String key = ""; + if(j <= 9){ + key = "0" + j; + }else{ + key = String.valueOf(j); + } + if(existTraceMap.get(key) == -1){ + existTraceMap.put(key, 0); + } + + } + } + }); + } + while(true){ + if(!existTraceMap.values().contains(-1)){ + if(existTraceMap.size() == maxDay){ + break; + } + } + } + try { + return existTraceMap; + } finally { + newCachedThreadPoll.shutdown(); + } + } + + public static Map<String,Object> getCarGPSTrack(String syURL,String carId,String startTime,String endTime,String sessionId){ + OkHttpClient okHttpClient = new OkHttpClient(); + + Request request = new Request.Builder() + .url(syURL + "/gps-web/api/get_gps_h.jsp?carId="+carId+"&startTime="+startTime+"&endTime="+endTime+"&filter0=true&maxSpeed=&stopLong=5&queryAlarm=false&userId=yanshi&loginType=user&loginWay=android&loginLang=zh_CN&appDevId=&sessionId="+sessionId) + .build(); + + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + response.headers(); //鍝嶅簲澶� + + ResponseBody responseBody = response.body(); + + try { + String message = responseBody.string();// 鍝嶅簲浣� + Map<String,Object> map = (Map<String, Object>) JSON.parse(message); + //System.out.println(message); + return map; + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return new HashMap(); + } + } } -- Gitblit v1.9.3