智慧保安后台管理-外网项目备份
zhongrj
2023-09-17 8853292babb2ad94de4a3207966f1e83b767cd2d
src/main/java/org/springblade/modules/equipage/controller/fixed.java
@@ -1,21 +1,19 @@
package org.springblade.modules.equipage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.alibaba.fastjson.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.springblade.common.utils.HttpReqUtil;
import org.springblade.common.utils.Md5SignUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.modules.FTP.FtpUtil;
import org.springblade.modules.equipage.service.CarService;
import org.springblade.modules.location.entity.LiveLocation;
import org.springblade.modules.location.entity.Locus;
import org.springblade.modules.location.service.LiveLocationService;
import org.springblade.modules.location.service.LocusService;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.system.service.MyAsyncService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -26,7 +24,7 @@
import java.text.SimpleDateFormat;
import java.util.*;
@Component
@Component("fixed")
public class fixed {
   private static final DateFormat JSON = null;
   @Autowired
@@ -37,6 +35,8 @@
   private LocusService locusService;
   @Autowired
   private CarService carService;
   @Autowired
   private MyAsyncService myAsyncService;
   /**
    * 押运人员
@@ -44,90 +44,92 @@
    * @return
    * @throws Exception
    */
   //@Scheduled(cron = "0 */1 * * * ?")
//   @Scheduled(cron = "0 */5 * * * ?")
   public void Peo() throws Exception {
      String url = "http://223.82.109.183:2080/Escort/getgis.php";
      String url = "http://47.104.104.46/api/client/getgis.php";
      //查询有押运人员的数据
      List<Map<String, Object>> list = userService.selectEquipent();
      for (int i = 0; i < list.size(); i++) {
         //实时位置实体类
         LiveLocation liveLocation = new LiveLocation();
         liveLocation.setType(1);
         String id = list.get(i).get("id").toString();
         liveLocation.setWorkerId(id);
         Map<String, Object> params = new HashMap<>();
         String equipmentCode = list.get(i).get("code").toString();
         //设备imei号
         params.put("acc", equipmentCode);
         String res = null;
         res = HttpReqUtil.getInstance().doPost(url, params, null);
         JSONArray jsonArray = JSONArray.fromObject(res);
         JSONArray sortedJsonArray = new JSONArray();
         List<JSONObject> jsonValues = new ArrayList<JSONObject>();
         for (int j = 0; j < jsonArray.size(); j++) {
            jsonValues.add(jsonArray.getJSONObject(j));
         }
         Collections.sort(jsonValues, new Comparator<JSONObject>() {
            private static final String KEY_NAME = "date";
            String string1;
            String string2;
            @Override
            public int compare(JSONObject a, JSONObject b) {
               try {
                  string1 = a.getString(KEY_NAME).replaceAll("-", "");
                  string2 = b.getString(KEY_NAME).replaceAll("-", "");
               } catch (JSONException e) {
                  // 处理异常
               }
               //这里是按照时间逆序排列,不加负号为正序排列
               return -string1.compareTo(string2);
      if (list.size() > 0) {
         for (int i = 0; i < list.size(); i++) {
            //实时位置实体类
            LiveLocation liveLocation = new LiveLocation();
            liveLocation.setType(1);
            String id = list.get(i).get("id").toString();
            liveLocation.setWorkerId(id);
            Map<String, Object> params = new HashMap<>();
            String equipmentCode = list.get(i).get("code").toString();
            //设备imei号
            params.put("acc", equipmentCode);
            String res = null;
            res = HttpReqUtil.getInstance().doPost(url, params, null);
            JSONArray jsonArray = JSONArray.fromObject(res);
            JSONArray sortedJsonArray = new JSONArray();
            List<JSONObject> jsonValues = new ArrayList<JSONObject>();
            for (int j = 0; j < jsonArray.size(); j++) {
               jsonValues.add(jsonArray.getJSONObject(j));
            }
         });
         for (int c = 0; c < jsonArray.size(); c++) {
            sortedJsonArray.add(jsonValues.get(c));
         }
         //经度
         String gis_jd = sortedJsonArray.getJSONObject(0).getString("gis_jd");
         //纬度
         String gis_wd = sortedJsonArray.getJSONObject(0).getString("gis_wd");
         String date = sortedJsonArray.getJSONObject(0).getString("date");
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Date dates = formatter.parse(date);
         //经度
         liveLocation.setLongitude(gis_jd);
         liveLocation.setLatitude(gis_wd);
         //纬度
         liveLocation.setRecordTime(dates);
         //先查询是否已有实时位置信息,如果有,则更新,没有则插入
         LiveLocation liveLocationInfo = liveLocationService.getLiveLocationInfo(liveLocation);
         boolean status = false;
         if (null == liveLocationInfo) {
            //新增
            status = liveLocationService.save(liveLocation);
            //数据推送
            String s1 =
               "insert into sys_live_location(id,type,worker_id,longitude,latitude,record_time,location) " +
                  "values(" + "'" + liveLocation.getId() + "'" + "," +
                  "'" + liveLocation.getType() + "'" + "," +
                  "'" + liveLocation.getWorkerId() + "'" + "," +
                  "'" + liveLocation.getLongitude() + "'" + "," +
                  "'" + liveLocation.getLatitude() + "'" + "," +
                  "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" + "," +
                  "'" + liveLocation.getLocation() + "'" + ")";
            FtpUtil.sqlFileUpload(s1);
         } else {
            status = liveLocationService.updateById(liveLocationInfo);
            //内网同步
            String s1 =
               "update sys_live_location set type = " + "'" + liveLocationInfo.getType() + "'" +
                  ",worker_id = " + "'" + liveLocationInfo.getWorkerId() + "'" +
                  ",longitude = " + "'" + liveLocationInfo.getLongitude() + "'" +
                  ",latitude = " + "'" + liveLocationInfo.getLatitude() + "'" +
                  ",record_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocationInfo.getRecordTime()) + "'" +
                  ",location = " + "'" + liveLocationInfo.getLocation() + "'" +
                  " " + "where id = " + "'" + liveLocationInfo.getId() + "'";
            FtpUtil.sqlFileUpload(s1);
            Collections.sort(jsonValues, new Comparator<JSONObject>() {
               private static final String KEY_NAME = "date";
               String string1;
               String string2;
               @Override
               public int compare(JSONObject a, JSONObject b) {
                  try {
                     string1 = a.getString(KEY_NAME).replaceAll("-", "");
                     string2 = b.getString(KEY_NAME).replaceAll("-", "");
                  } catch (JSONException e) {
                     // 处理异常
                  }
                  //这里是按照时间逆序排列,不加负号为正序排列
                  return -string1.compareTo(string2);
               }
            });
            for (int c = 0; c < jsonArray.size(); c++) {
               sortedJsonArray.add(jsonValues.get(c));
            }
            //经度
            String gis_jd = sortedJsonArray.getJSONObject(0).getString("gis_jd");
            //纬度
            String gis_wd = sortedJsonArray.getJSONObject(0).getString("gis_wd");
            String date = sortedJsonArray.getJSONObject(0).getString("date");
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date dates = formatter.parse(date);
            //经度
            liveLocation.setLongitude(gis_jd);
            liveLocation.setLatitude(gis_wd);
            //纬度
            liveLocation.setRecordTime(dates);
            //先查询是否已有实时位置信息,如果有,则更新,没有则插入
            LiveLocation liveLocationInfo = liveLocationService.getLiveLocationInfo(liveLocation);
            boolean status = false;
            if (null == liveLocationInfo) {
               //新增
               status = liveLocationService.save(liveLocation);
               //数据推送
               String s1 =
                  "insert into sys_live_location(id,type,worker_id,longitude,latitude,record_time) " +
                     "values(" + "'" + liveLocation.getId() + "'" + "," +
                     "'" + liveLocation.getType() + "'" + "," +
                     "'" + liveLocation.getWorkerId() + "'" + "," +
                     "'" + liveLocation.getLongitude() + "'" + "," +
                     "'" + liveLocation.getLatitude() + "'" + "," +
                     "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" + ")";
               //FtpUtil.sqlFileUpload(s1);
               myAsyncService.dataSync(s1);
            } else {
               status = liveLocationService.updateById(liveLocationInfo);
               //内网同步
               String s1 =
                  "update sys_live_location set type = " + "'" + liveLocationInfo.getType() + "'" +
                     ",worker_id = " + "'" + liveLocationInfo.getWorkerId() + "'" +
                     ",longitude = " + "'" + liveLocationInfo.getLongitude() + "'" +
                     ",latitude = " + "'" + liveLocationInfo.getLatitude() + "'" +
                     ",record_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocationInfo.getRecordTime()) + "'" +
                     " " + "where id = " + "'" + liveLocationInfo.getId() + "'";
               //FtpUtil.sqlFileUpload(s1);
               myAsyncService.dataSync(s1);
            }
         }
      }
   }
@@ -138,12 +140,13 @@
    * @return
    * @throws Exception
    */
   //@Scheduled(cron = "0 */1 * * * ?")
//   @Scheduled(cron = "0 0 * * * ?")
   public void Peog() throws Exception {
      System.out.println("押运人员");
      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:mm:ss");
      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++) {
@@ -156,40 +159,49 @@
         String equipmentCode = list.get(i).get("code").toString();
         //设备imei号
         params.put("number", 7730);
         params.put("acc", 7731);
         params.put("acc", equipmentCode);
         params.put("startTime", df.format(calendar.getTime()));
         params.put("endTime", df.format(new Date()));
         String res = null;
         res = HttpReqUtil.getInstance().doPost(url, params, null);
         String a="["+res+"]";
         String a = "[" + res + "]";
         JSONArray jsonArray = JSONArray.fromObject(a);
         String s1 = "";
         String track = jsonArray.getJSONObject(0).get("track").toString();
         JSONArray jsonArray1 = JSONArray.fromObject(track);
         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();
         if (track.equals("[]")) {
            System.out.println("数据为空");
         } else {
            JSONArray jsonArray1 = JSONArray.fromObject(track);
            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 += ";";
               }
            }
            locus.setLongitude(gis_jd);
            locus.setLatitude(gis_wd);
            locusService.save(locus);
//            //数据推送
//            String 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()) + "'" + ")";
//            FtpUtil.sqlFileUpload(s1);
            //FtpUtil.sqlFileUpload(s1);
            myAsyncService.dataSync(s1);
         }
      }
   }
@@ -198,7 +210,7 @@
   /**
    * 车辆实时位置
    */
   //@Scheduled(cron = "0 */1 * * * ?")
//   @Scheduled(cron = "0 */5 * * * ?")
   public void locationcar() {
      String url = "http://dvopenapi.aimap.net.cn/openapi/device/location";
      String res = null;
@@ -220,52 +232,59 @@
            res = HttpReqUtil.getInstance().doPost(url, params, null);
            String a = "[" + res + "]";
            JSONArray jsonArray = JSONArray.fromObject(a);
            String data = jsonArray.getJSONObject(0).get("data").toString();
            String b = "[" + data + "]";
            JSONArray jsonArrayb = JSONArray.fromObject(b);
            String x = jsonArrayb.getJSONObject(0).get("x").toString();
            String y = jsonArrayb.getJSONObject(0).get("y").toString();
            String timestamp = jsonArrayb.getJSONObject(0).get("timestamp").toString();
            //实时位置实体类
            LiveLocation liveLocation = new LiveLocation();
            liveLocation.setType(2);
            String carnumber = maps.get(i).get("carnumber").toString();
            liveLocation.setWorkerId(carnumber);
            //经度
            liveLocation.setLongitude(x);
            //纬度
            liveLocation.setLatitude(y);
            Date date = timeStamp2Date(timestamp);
            liveLocation.setRecordTime(date);
            //先查询是否已有实时位置信息,如果有,则更新,没有则插入
            LiveLocation liveLocationInfo = liveLocationService.getLiveLocationInfo(liveLocation);
            boolean status = false;
            if (null == liveLocationInfo) {
               //新增
               status = liveLocationService.save(liveLocation);
               //数据推送
               String s1 =
                  "insert into sys_live_location(id,type,worker_id,longitude,latitude,record_time,location) " +
                     "values(" + "'" + liveLocation.getId() + "'" + "," +
                     "'" + liveLocation.getType() + "'" + "," +
                     "'" + liveLocation.getWorkerId() + "'" + "," +
                     "'" + liveLocation.getLongitude() + "'" + "," +
                     "'" + liveLocation.getLatitude() + "'" + "," +
                     "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" + "," +
                     "'" + liveLocation.getLocation() + "'" + ")";
               FtpUtil.sqlFileUpload(s1);
            } else {
               status = liveLocationService.updateById(liveLocationInfo);
               //内网同步
               String s1 =
                  "update sys_live_location set type = " + "'" + liveLocation.getType() + "'" +
                     ",worker_id = " + "'" + liveLocation.getWorkerId() + "'" +
                     ",longitude = " + "'" + liveLocation.getLongitude() + "'" +
                     ",latitude = " + "'" + liveLocation.getLatitude() + "'" +
                     ",record_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" +
                     ",location = " + "'" + liveLocation.getLocation() + "'" +
                     " " + "where id = " + "'" + liveLocation.getId() + "'";
               FtpUtil.sqlFileUpload(s1);
            String code = jsonArray.getJSONObject(0).get("code").toString();
            if (Integer.parseInt(code) == 200) {
               String data = jsonArray.getJSONObject(0).get("data").toString();
               String b = "[" + data + "]";
               JSONArray jsonArrayb = JSONArray.fromObject(b);
               String x = jsonArrayb.getJSONObject(0).get("x").toString();
               String y = jsonArrayb.getJSONObject(0).get("y").toString();
               String timestamp = jsonArrayb.getJSONObject(0).get("timestamp").toString();
               //实时位置实体类
               LiveLocation liveLocation = new LiveLocation();
               liveLocation.setType(2);
               String carnumber = maps.get(i).get("carnumber").toString();
               liveLocation.setWorkerId(carnumber);
               //经度
               liveLocation.setLongitude(x);
               //纬度
               liveLocation.setLatitude(y);
               Date date = timeStamp2Date(timestamp);
               liveLocation.setRecordTime(date);
               //先查询是否已有实时位置信息,如果有,则更新,没有则插入
               LiveLocation liveLocationInfo = liveLocationService.getLiveLocationInfo(liveLocation);
               boolean status = false;
               if (null == liveLocationInfo) {
                  //新增
                  status = liveLocationService.save(liveLocation);
                  if (status) {
                     //数据推送
                     String s1 =
                        "insert into sys_live_location(id,type,worker_id,longitude,latitude,record_time) " +
                           "values(" + "'" + liveLocation.getId() + "'" + "," +
                           "'" + liveLocation.getType() + "'" + "," +
                           "'" + liveLocation.getWorkerId() + "'" + "," +
                           "'" + liveLocation.getLongitude() + "'" + "," +
                           "'" + liveLocation.getLatitude() + "'" + "," +
                           "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" + ")";
                     //FtpUtil.sqlFileUpload(s1);
                     myAsyncService.dataSync(s1);
                  }
               } else {
                  status = liveLocationService.updateById(liveLocationInfo);
                  //内网同步
                  if (status) {
                     String s1 =
                        "update sys_live_location set type = " + "'" + liveLocationInfo.getType() + "'" +
                           ",worker_id = " + "'" + liveLocationInfo.getWorkerId() + "'" +
                           ",longitude = " + "'" + liveLocationInfo.getLongitude() + "'" +
                           ",latitude = " + "'" + liveLocationInfo.getLatitude() + "'" +
                           ",record_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocationInfo.getRecordTime()) + "'" +
                           " " + "where id = " + "'" + liveLocationInfo.getId() + "'";
                     //FtpUtil.sqlFileUpload(s1);
                     myAsyncService.dataSync(s1);
                  }
               }
            }
         } catch (Exception e) {
            e.printStackTrace();
@@ -290,7 +309,7 @@
   /**
    * 查询车辆轨迹
    */
   //@Scheduled(cron = "0 */1 * * * ?")
//   @Scheduled(cron = "0 0 * * * ?")
   public void locationhistoryTrack() {
      Calendar calendar = Calendar.getInstance();
      /* HOUR_OF_DAY 指示一天中的小时 */
@@ -305,7 +324,7 @@
         params.put("beginTime", df.format(calendar.getTime()));
         params.put("endTime", df.format(new Date()));
         params.put("rectify", 0);
         params.put("callbackUrl", "http://2h3f861221.wicp.vip/locus/SaveUrl");
         params.put("callbackUrl", "http://61.131.136.25:2080/api/locus/SaveUrl");
         params.put("callbackId", maps.get(i).get("carnumber").toString());
         params.put("appId", "PO00000761");
         params.put("timestamp", System.currentTimeMillis());
@@ -325,6 +344,5 @@
      }
   }
}