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