From 62eb499b0c969f246d3245d1429a97da4de1ce28 Mon Sep 17 00:00:00 2001
From: 钟日健 <arsn163@163.com>
Date: Mon, 01 Jun 2026 20:46:13 +0800
Subject: [PATCH] feat: 成绩查询增加年龄查询返回

---
 src/main/java/org/springblade/modules/location/controller/LocusController.java |  229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 229 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/location/controller/LocusController.java b/src/main/java/org/springblade/modules/location/controller/LocusController.java
index 9c3c212..f785a88 100644
--- a/src/main/java/org/springblade/modules/location/controller/LocusController.java
+++ b/src/main/java/org/springblade/modules/location/controller/LocusController.java
@@ -1,17 +1,44 @@
 package org.springblade.modules.location.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.csvreader.CsvReader;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import liquibase.pro.packaged.E;
+import liquibase.pro.packaged.S;
 import lombok.AllArgsConstructor;
+import net.sf.json.JSONArray;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import org.springblade.common.utils.DowloadZipUtil;
+import org.springblade.common.utils.FileZip;
+import org.springblade.common.utils.HttpReqUtil;
+import org.springblade.common.utils.Md5SignUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.FTP.FtpUtil;
+import org.springblade.modules.equipage.service.CarService;
 import org.springblade.modules.location.entity.Locus;
 import org.springblade.modules.location.service.LocusService;
 import org.springblade.modules.location.vo.LocusVo;
+import org.springblade.modules.system.service.IUserService;
+import org.springblade.modules.system.service.MyAsyncService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.List;
+
+import static org.springblade.common.config.FtpConfig.localPath;
 
 /**
  * @author zhongrj
@@ -24,9 +51,13 @@
 public class LocusController {
 
 	private final LocusService locusService;
+	private final CarService carService;
+	private IUserService userService;
+	private final MyAsyncService myAsyncService;
 
 	/**
 	 * 自定义分页
+	 *
 	 * @param query page,size
 	 * @param locus 轨迹信息对象
 	 */
@@ -38,6 +69,7 @@
 
 	/**
 	 * 新增
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@PostMapping("/save")
@@ -48,6 +80,7 @@
 
 	/**
 	 * 修改
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@PostMapping("/update")
@@ -57,6 +90,7 @@
 
 	/**
 	 * 新增或修改
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@PostMapping("/submit")
@@ -66,6 +100,7 @@
 
 	/**
 	 * 删除
+	 *
 	 * @param ids 轨迹信息ids 数组
 	 */
 	@PostMapping("/remove")
@@ -75,6 +110,7 @@
 
 	/**
 	 * 详情
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@GetMapping("/detail")
@@ -84,4 +120,197 @@
 		return R.data(detail);
 	}
 
+	/**
+	 * 查询车辆轨迹
+	 */
+	@GetMapping("/locationhistoryTrack")
+	public void locationhistoryTrack() {
+		String url = "http://dvopenapi.aimap.net.cn/openapi/device/historyTrack";
+		String res = null;
+		List<Map<Object, Object>> maps = carService.selectCar();
+		for (int i = 0; i < maps.size(); i++) {
+			Map<String, Object> params = new HashMap<>();
+			params.put("imei", maps.get(i).get("code").toString());
+			params.put("beginTime", "2021112510");
+			params.put("endTime", "2021112511");
+			params.put("rectify", 0);
+			params.put("callbackUrl", "http://2h3f861221.wicp.vip/locus/SaveUrl");
+			params.put("callbackId", maps.get(i).get("carnumber").toString());
+			params.put("appId", "PO00000761");
+			params.put("timestamp", System.currentTimeMillis());
+			String secert = "dXRGb2pRNVdWOGQ3d1ouV29UYzc1MnJaUnBwTzUx";
+			String computeSign = "";
+			try {
+				computeSign = Md5SignUtil.signRequest(params, secert);
+			} catch (IOException e1) {
+				e1.printStackTrace();
+			}
+			params.put("sign", computeSign);
+			try {
+				res = HttpReqUtil.getInstance().doPost(url, params, null);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+
+	}
+
+	/**
+	 * 轨迹回调
+	 *
+	 * @param callbackId
+	 * @param fileUrl
+	 */
+	@PostMapping("/SaveUrl")
+	@ApiOperation(value = "详情", notes = "传入car")
+	public void SaveUrl(String callbackId, String fileUrl) throws Exception {
+		DowloadZipUtil dowloadZipUtil = new DowloadZipUtil();
+		File file = dowloadZipUtil.downloadFile(fileUrl, "/usr/local/nginx/dist/enterprises/car");
+		//文件名
+		String name = file.getName();
+		String substring = name.substring(0, name.length() - 4);
+		//解压数据
+		FileZip fileZip = new FileZip();
+		fileZip.ZipUncompress("/usr/local/nginx/dist/enterprises/car/" + substring + ".zip", "/usr/local/nginx/dist/enterprises/car");
+		try {
+			// 用来保存数据
+			ArrayList<String[]> csvFileList = new ArrayList<String[]>();
+			// 定义一个CSV路径
+			String csvFilePath = "/usr/local/nginx/dist/enterprises/car/" + substring + ".csv";
+			// 创建CSV读对象 例如:CsvReader(文件路径,分隔符,编码格式);
+			CsvReader reader = new CsvReader(csvFilePath, ',', Charset.forName("UTF-8"));
+			// 跳过表头 如果需要表头的话,这句可以忽略
+			reader.readHeaders();
+			// 逐行读入除表头的数据
+			while (reader.readRecord()) {
+				csvFileList.add(reader.getValues());
+			}
+			reader.close();
+			Locus locus = new Locus();
+			String s1 = "";
+			if (csvFileList.size() != 0) {
+				//遍历读取的CSV文件
+				for (int row = 0; row < csvFileList.size(); row++) {
+					// 取得第row行第0列的数据
+					String cell = csvFileList.get(row)[0];
+					String cell1 = csvFileList.get(row)[1];
+					String cell2 = csvFileList.get(row)[2];
+					Date date = timeStamp2Date(cell2);
+					locus.setType(2);
+					locus.setLongitude(cell);
+					locus.setLatitude(cell1);
+					locus.setRecordTime(date);
+					locus.setWorkerId(callbackId);
+					locusService.save(locus);
+					//数据推送
+					s1 +=
+						"insert into sys_locus(id,type,worker_id,longitude,latitude,record_time) " +
+							"values(" + "'" + locus.getId() + "'" + "," +
+							"'" + locus.getType() + "'" + "," +
+							"'" + locus.getWorkerId() + "'" + "," +
+							"'" + locus.getLongitude() + "'" + "," +
+							"'" + locus.getLatitude() + "'" + "," +
+							"'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(locus.getRecordTime()) + "'" + ")";
+					if (row != csvFileList.size() - 1) {
+						s1 += ";";
+					}
+				}
+				//FtpUtil.sqlFileUpload(s1);
+				myAsyncService.dataSync(s1);
+				deletescsv(substring);
+			}
+			deletescsv(substring);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public static Date timeStamp2Date(String time) {
+		Long timeLong = Long.parseLong(time);
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的时间格式
+		Date date;
+		try {
+			date = sdf.parse(sdf.format(timeLong));
+			return date;
+		} catch (ParseException e) {
+			e.printStackTrace();
+			return null;
+		}
+
+	}
+
+//	@PostMapping("/ss")
+//	public void Peog() throws Exception {
+//		String url = "http://47.104.104.46/api/client/getgistrack.php";
+//		Calendar calendar = Calendar.getInstance();
+//		calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
+//		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
+//		//查询有押运人员的数据
+//		List<Map<String, Object>> list = userService.selectEquipent();
+//		for (int i = 0; i < list.size(); i++) {
+//			//实时位置实体类
+//			Locus locus = new Locus();
+//			locus.setType(1);
+//			String id = list.get(i).get("id").toString();
+//			locus.setWorkerId(id);
+//			Map<String, Object> params = new HashMap<>();
+//			String equipmentCode = list.get(i).get("code").toString();
+//			//设备imei号
+//			params.put("number", 7730);
+//			params.put("acc", equipmentCode);
+//			params.put("startTime", "2021-12-01");
+//			params.put("endTime", "2021-12-02");
+//			String res = null;
+//			res = HttpReqUtil.getInstance().doPost(url, params, null);
+//			String a = "[" + res + "]";
+//			JSONArray jsonArray = JSONArray.fromObject(a);
+//			String track = jsonArray.getJSONObject(0).get("track").toString();
+//			JSONArray jsonArray1 = JSONArray.fromObject(track);
+//			String s1 = "";
+//			for (int j = 0; j < jsonArray1.size(); j++) {
+//				String gis_jd = jsonArray1.getJSONObject(j).get("gis_jd").toString();
+//				String gis_wd = jsonArray1.getJSONObject(j).get("gis_wd").toString();
+//				String date = jsonArray1.getJSONObject(j).get("date").toString();
+//				SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//				try {
+//					//使用SimpleDateFormat的parse()方法生成Date
+//					Date dates = sf.parse(date);
+//					locus.setRecordTime(dates);
+//					//打印Date
+//				} catch (ParseException e) {
+//					e.printStackTrace();
+//				}
+//				locus.setLongitude(gis_jd);
+//				locus.setLatitude(gis_wd);
+//				locusService.save(locus);
+//				//数据推送
+//				s1 += "insert into sys_locus(id,type,worker_id,longitude,latitude,record_time) values" +
+//					" (" + "'" + locus.getId() + "'" + "," +
+//					"'" + locus.getType() + "'" + "," +
+//					"'" + locus.getWorkerId() + "'" + "," +
+//					"'" + locus.getLongitude() + "'" + "," +
+//					"'" + locus.getLatitude() + "'" + "," +
+//					"'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(locus.getRecordTime()) + "'" + ")";
+//				if (j != jsonArray1.size() - 1) {
+//					s1 += ";";
+//				}
+//			}
+//			FtpUtil.sqlFileUpload(s1);
+//		}
+//	}
+
+
+	/**
+	 * 删除本地csv文件
+	 *
+	 * @param fileName
+	 */
+	public static void deletescsv(String fileName) {
+		File file = new File("D:\\caiji\\" + fileName + ".csv");
+		if (file.isFile() && file.exists()) {
+			file.delete();
+		}
+	}
+
+
 }

--
Gitblit v1.9.3