From bb72c40ff327fc6a7a1b3a96e0589507711f0cdf Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Tue, 30 Nov 2021 14:58:29 +0800
Subject: [PATCH] 1.押运

---
 src/main/java/org/springblade/modules/location/controller/LocusController.java |  210 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 210 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..42b9194 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,41 @@
 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.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;
 
 /**
  * @author zhongrj
@@ -24,9 +48,12 @@
 public class LocusController {
 
 	private final LocusService locusService;
+	private final CarService carService;
+	private IUserService userService;
 
 	/**
 	 * 自定义分页
+	 *
 	 * @param query page,size
 	 * @param locus 轨迹信息对象
 	 */
@@ -38,6 +65,7 @@
 
 	/**
 	 * 新增
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@PostMapping("/save")
@@ -48,6 +76,7 @@
 
 	/**
 	 * 修改
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@PostMapping("/update")
@@ -57,6 +86,7 @@
 
 	/**
 	 * 新增或修改
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@PostMapping("/submit")
@@ -66,6 +96,7 @@
 
 	/**
 	 * 删除
+	 *
 	 * @param ids 轨迹信息ids 数组
 	 */
 	@PostMapping("/remove")
@@ -75,6 +106,7 @@
 
 	/**
 	 * 详情
+	 *
 	 * @param locus 轨迹信息对象
 	 */
 	@GetMapping("/detail")
@@ -84,4 +116,182 @@
 		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, "D:\\caiji");
+		//文件名
+		String name = file.getName();
+		String substring = name.substring(0, name.length() - 4);
+		//解压数据
+		FileZip fileZip = new FileZip();
+		fileZip.ZipUncompress("D:\\caiji\\" + substring + ".zip", "D:\\caiji");
+		try {
+			// 用来保存数据
+			ArrayList<String[]> csvFileList = new ArrayList<String[]>();
+			// 定义一个CSV路径
+			String csvFilePath = "D:\\caiji\\" + 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 = "";
+			//遍历读取的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);
+		} 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-06-01");
+			params.put("endTime", "2021-08-01");
+			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 = "";
+			String sql="insert into sys_locus(id,type,worker_id,longitude,latitude,record_time) values ";
+			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 += "(" + "'" + 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 += ",";
+				}
+				else {
+					s1+=";";
+				}
+			}
+			String c = "a" +sql+ s1;
+			FtpUtil.sqlFileUpload(c);
+		}
+	}
+
 }

--
Gitblit v1.9.3