Bläddra i källkod

ZHBD接口处理

yuanchao 2 månader sedan
förälder
incheckning
1f96dc2025
15 ändrade filer med 560 tillägg och 6 borttagningar
  1. 32 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotZHBD/DeviceLogDO.java
  2. 27 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotZHBD/DeviceZHBDDO.java
  3. 32 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotZHBD/TDLogDO.java
  4. 25 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/TDDeviceMapper.java
  5. 7 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillMapper.java
  6. 213 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotZHBDJob.java
  7. 14 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/ApiResponse.java
  8. 17 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/DataEntity.java
  9. 113 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LocationData.java
  10. 16 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LocationRequestEntity.java
  11. 17 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LoginRequestEntity.java
  12. 18 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LoginResponseEntity.java
  13. 16 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/ResponseData.java
  14. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/DeviceServiceImpl.java
  15. 12 0
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

+ 32 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotZHBD/DeviceLogDO.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD;
+
+import cn.hutool.core.date.DateTime;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className DeviceLogDO
+ * @date 2025/6/9 15:10
+ * @description
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DeviceLogDO extends BaseDO {
+    private String ts;
+    private String logValue;
+    private int isMonitor;
+    private int logType;
+    private String identity;
+    private int mode;
+    private String readTime;
+    private int batchId;
+    private String remark;
+    private String serialNumber;
+
+}

+ 27 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotZHBD/DeviceZHBDDO.java

@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className DeviceZHBDDO
+ * @date 2025/6/12 9:11
+ * @description
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DeviceZHBDDO extends BaseDO {
+    private int id;
+    private String deviceCode;
+    private String deviceName;
+    private String carId;
+    private String location;
+
+
+}

+ 32 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotZHBD/TDLogDO.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+import java.util.List;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className TDlogDO
+ * @date 2025/6/12 9:39
+ * @description
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TDLogDO extends BaseDO {
+
+    private String tableName;
+    /**
+     * 设备编号
+     */
+    private String serialNumber;
+    /**
+     * 设备日志列表
+     */
+    private List<DeviceLogDO> list;
+}

+ 25 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/TDDeviceMapper.java

@@ -3,15 +3,14 @@ package cn.iocoder.yudao.module.pms.dal.mysql;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.DeviceVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceLogDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.TDDeviceDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.TDLogDO;
 import com.baomidou.dynamic.datasource.annotation.DS;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import org.apache.ibatis.annotations.*;
 
 import java.sql.Timestamp;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -87,4 +86,25 @@ public interface TDDeviceMapper extends BaseMapperX<TDDeviceDO> {
     @DS("tdengine")
 //    @TenantIgnore
     List<DeviceVO> selectAllBtTimeAndIdentifier(@Param("deviceName") String tableName, @Param("identifier") String identifier,@Param("start") Timestamp start,@Param("end") Timestamp end, @Param(("intervalDuration")) Integer intervalDuration);
+
+    @InterceptorIgnore(tenantLine = "true")
+    @DS("tdengine")
+    @Insert({
+            "<script>",
+            "INSERT INTO iot_log.device_${data.tableName} USING iot_log.device_log\n" +
+                    "        TAGS (${data.serialNumber}) VALUES ",
+            "<foreach collection='data.list' item='device' separator=','>",
+            "(now,"+
+            " #{device.logValue},"+
+            "#{device.isMonitor},"+
+            "#{device.logType},"+
+            "#{device.identity},"+
+            "#{device.mode},"+
+            "now,"+
+            "#{device.remark},"+
+            "#{device.batchId})"+
+            "</foreach>",
+            "</script>"
+    })
+    int batchInsert(@Param("data") TDLogDO data);
 }

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillMapper.java

@@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeati
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceZHBDDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodel.IotModelDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotModelTemplateAttrsDO;
@@ -103,4 +104,10 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     int updateFillOrder2(IotDeviceRunLogDO vo);
     @TenantIgnore
     IPage<IotOpeationFillOrderDO> fillRecords(IPage<IotOpeationFillPageReqVO> page, @Param("deviceId") Long deviceId, @Param("orderName") String orderName,@Param("orderStatus") Integer orderStatus);
+
+    @TenantIgnore
+    List<DeviceZHBDDO> carList();
+
+    @TenantIgnore
+    int upLocation(DeviceZHBDDO zhbddo);
 }

+ 213 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/IotZHBDJob.java

@@ -0,0 +1,213 @@
+package cn.iocoder.yudao.module.pms.job;
+
+
+import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceLogDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceZHBDDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.TDLogDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.TDDeviceMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
+import cn.iocoder.yudao.module.pms.job.httpEntity.ApiResponse;
+import cn.iocoder.yudao.module.pms.job.httpEntity.LocationData;
+import cn.iocoder.yudao.module.pms.job.httpEntity.LoginRequestEntity;
+import cn.iocoder.yudao.module.pms.job.httpEntity.LoginResponseEntity;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.xingyuv.captcha.util.StringUtils;
+import io.netty.util.internal.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.*;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className test
+ * @date 2025/6/8 16:42
+ * @description
+ */
+@Component
+@Slf4j
+public class IotZHBDJob implements JobHandler {
+
+
+    private static final String ID = "NjI1LjUyNS42ODg";
+    private static final String SECRET = "3897865b70d7bf29fcca5029147f7d0a";
+    private static final String TOKEN_URL = "https://zhbdgps.cn/video/webapi/user/login";
+    private static final String LOCATION_URL="https://zhbdgps.cn/video/webapi/location/get-location-use-carids";
+    private static final String TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRpZCI6MTA2NTUsInRraSI6MTEzMDQ0NjQ2MjE1NzcyMTYwMCwiY3J0IjoxNzQ5Njg1OTA0ODg5LCJjbGllbnROYW1lIjoiWUa8r83FIiwicm9sZWlkIjo1MywidXNlcnR5cGUiOjAsImx0cCI6ImFwaSIsIn" +
+            "R5cGVpZCI6MTUwMSwiZXhwIjoxNzQ5NzcyMzA0ODg5LCJ1c2VyaWQiOjUyNSwic2VydmVyaWQiOjE0MywidXNlcm5hbWUiOiJ5Zmp0In0=.MmFlMDlhZjE3ZGI2NTM2ODgzZjcyZTI2ZTBmYWM1N2U=";
+
+
+    @Autowired
+    private IotOpeationFillMapper zhbdmapper;
+    @Autowired
+    private TDDeviceMapper deviceMapper;
+    @Override
+    @TenantIgnore
+    public String execute(String param) throws Exception {
+        String token = "";
+
+
+
+        String parameter = "lng,lat,today_distance,distance,todayoil,totaloil,online,oil1,oil2,oil3,oil4";
+
+        try {
+
+            //发送令牌请求
+            token = getLoginToken(ID, SECRET);
+
+            List<DeviceZHBDDO> zhbdList = zhbdmapper.carList();
+            // 准备请求参数
+            String carIds = StringUtils.strip(zhbdList.stream().map(e->e.getCarId()).collect(Collectors.toList()).toString(),"[]").replace(" ","") ;
+            System.out.println("carIDs----------"+carIds);
+            Long timestamp = System.currentTimeMillis();  // 当前时间戳
+
+
+            for (DeviceZHBDDO zhbddo:zhbdList) {
+                // 构建请求JSON
+                Map<String, Object> requestMap = new HashMap<>();
+                requestMap.put("car_ids", zhbddo.getCarId());
+                requestMap.put("time", timestamp);
+                // 发送定位信息请求并获取响应
+                if(token!=null){
+                    String jsonResponse = sendPostRequest(requestMap,token);
+                    ApiResponse response = parseResponse(jsonResponse);
+                    // 处理结果
+                    if (response != null && response.code == 200) {
+                        System.out.println("获取定位信息请求成功: " + response.message);
+                        List<Map<String,Object>> locations = response.data.data;
+
+
+                        for (Map<String,Object> location : locations) {
+
+                            if(String.valueOf(location.get("vehicle_id")).equals(zhbddo.getCarId())){
+
+                                System.out.println("匹配成功==========="+zhbddo.getCarId());
+
+                                TDLogDO logDO = new TDLogDO();
+                                List<DeviceLogDO> list = new ArrayList<>();
+
+                                logDO.setTableName(zhbddo.getDeviceCode().toLowerCase());
+                                logDO.setSerialNumber("'"+zhbddo.getDeviceCode()+"'");
+
+                                location.forEach((k,v)->{
+                                    if(parameter.contains(k)){
+                                        DeviceLogDO deviceLogDO = new DeviceLogDO();
+                                        deviceLogDO.setLogValue(String.valueOf(v));
+                                        deviceLogDO.setIsMonitor(0);
+                                        deviceLogDO.setLogType(0);
+                                        deviceLogDO.setIdentity(k);
+                                        deviceLogDO.setMode(0);
+                                        deviceLogDO.setRemark("");
+                                        deviceLogDO.setBatchId(0);
+                                        list.add(deviceLogDO);
+                                        logDO.setList(list);
+                                    }
+                                    if(k.equals("adree")){
+                                        zhbddo.setLocation(String.valueOf(v));
+                                        zhbdmapper.upLocation(zhbddo);
+                                    }
+                                });
+                                System.out.println("YF号-----------------"+logDO.getSerialNumber());
+                                /**
+                                 * 插入时序库
+                                 */
+                                deviceMapper.batchInsert(logDO);
+                            }
+
+                        }
+                    } else {
+                        System.err.println("获取定位信息请求失败: " + (response != null ? response.message : "未知错误"));
+                    }
+                }
+
+            }
+            // 解析响应
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+        //System.out.println("获取到的Token: " + token);
+        return "执行成功";
+    }
+
+
+    public static String getLoginToken(String id, String secret) {
+
+        // 2. 创建请求实体类
+        LoginRequestEntity request = new LoginRequestEntity();
+        request.setId(id);
+        request.setSecret(secret);
+
+        // 3. 设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+
+        // 4. 封装请求实体
+        HttpEntity<LoginRequestEntity> entity = new HttpEntity<>(request, headers);
+
+        // 5. 发送POST请求
+        RestTemplate restTemplate = new RestTemplate();
+        ResponseEntity<LoginResponseEntity> response = restTemplate.exchange(
+                TOKEN_URL,
+                HttpMethod.POST,
+                entity,
+                LoginResponseEntity.class
+        );
+
+        // 6. 处理响应
+        if (response.getStatusCode() == HttpStatus.OK && response.getBody() != null) {
+            return response.getBody().getData().getToken();
+        } else {
+            throw new RuntimeException("登录失败: " + response.getStatusCode());
+        }
+    }
+
+
+    private static String sendPostRequest(Map<String, Object> requestData,String token) throws IOException {
+
+        OkHttpClient client = new OkHttpClient();
+        ObjectMapper objectMapper = new ObjectMapper();
+        String json = objectMapper.writeValueAsString(requestData);
+        RequestBody body = RequestBody.create(json, okhttp3.MediaType.parse("application/json"));
+
+        Request request = new Request.Builder()
+                .url(LOCATION_URL)
+                .post(body)
+                .addHeader("Content-Type", "application/json")
+                .addHeader("Authorization", "Bearer " + token)// 关键头信息
+                .build();
+        String responseData = "";
+        try (Response response = client.newCall(request).execute()) {
+            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
+            responseData = response.body().string();
+            System.out.println(responseData);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return responseData;
+    }
+
+    private static ApiResponse parseResponse(String json) throws IOException {
+        ObjectMapper mapper = new ObjectMapper();
+        return mapper.readValue(json, ApiResponse.class);
+    }
+
+
+
+}

+ 14 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/ApiResponse.java

@@ -0,0 +1,14 @@
+package cn.iocoder.yudao.module.pms.job.httpEntity;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className ApiResponse
+ * @date 2025/6/11 14:56
+ * @description
+ */
+public class ApiResponse {
+    public int code;
+    public ResponseData data;
+    public String message;
+}

+ 17 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/DataEntity.java

@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.pms.job.httpEntity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className DataEntity
+ * @date 2025/6/8 16:56
+ * @description
+ */
+@Data
+public class DataEntity {
+    @JsonProperty("token")  // 确保正确映射JSON字段
+    private String token;
+}

+ 113 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LocationData.java

@@ -0,0 +1,113 @@
+package cn.iocoder.yudao.module.pms.job.httpEntity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className LocationData
+ * @date 2025/6/11 14:57
+ * @description
+ */
+@Data
+public class LocationData {
+    @JsonProperty("vehicle_id")
+    public String vehicleId;
+
+    @JsonProperty("vehicle_name")
+    public String vehicleName;
+
+    public String remarks;
+    public String remarks2;
+    public String devicecoding;
+    public String sim_card;
+    public String vin;
+
+    @JsonProperty("client_name")
+    public String clientName;
+
+    public String recvtime;
+    public String gpstime;
+    public double speed;
+    public int dir;
+
+    @JsonProperty("dir_str")
+    public String dirStr;
+
+    public int alt;
+    public String lng;
+    public String lat;
+    public String glat;
+    public String glng;
+    public String blat;
+    public String blng;
+
+    @JsonProperty("location_mode_str")
+    public String locationModeStr;
+
+    @JsonProperty("av_str")
+    public String avStr;
+
+    public double accuracy;
+    public String satellite;
+    public int gsm;
+
+    @JsonProperty("today_distance")
+    public String todayDistance;
+
+    public String distance;
+    public String dayacctime;
+    public String totalacctime;
+    public String duelectricity;
+    public String electricity;
+    public String temp1;
+    public String temp2;
+    public String temp3;
+    public String temp4;
+    public String humidity1;
+    public String humidity2;
+    public String humidity3;
+    public String humidity4;
+    public String oil1;
+    public String oil2;
+    public String oil3;
+    public String oil4;
+    public String vol1;
+    public String vol2;
+    public String vol3;
+    public String vol4;
+
+    @JsonProperty("todayoil")
+    public String todayOil;
+
+    @JsonProperty("totaloil")
+    public String totalOil;
+
+    public String zhongliang;
+    public String zhongliang2;
+    public double weight;
+    public double weight2;
+
+    @JsonProperty("allzhongliang")
+    public double allZhongliang;
+
+    public boolean acc;
+
+    @JsonProperty("driverNameIC")
+    public String driverNameIc;
+
+    @JsonProperty("state_str")
+    public String stateStr;
+
+    @JsonProperty("alarm_str")
+    public String alarmStr;
+
+    public String roadlevel;
+
+    @JsonProperty("roadspeedlimit")
+    public String roadSpeedLimit;
+
+    public String adree;
+    public boolean online;
+}

+ 16 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LocationRequestEntity.java

@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.pms.job.httpEntity;
+
+import lombok.Data;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className LocationRequestEntity
+ * @date 2025/6/12 8:00
+ * @description
+ */
+@Data
+public class LocationRequestEntity {
+    String carIds;
+    long time;
+}

+ 17 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LoginRequestEntity.java

@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.pms.job.httpEntity;
+
+import lombok.Data;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className LoginRequest
+ * @date 2025/6/8 16:55
+ * @description
+ */
+@Data
+public class LoginRequestEntity {
+    private String id;
+    private String secret;
+
+}

+ 18 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/LoginResponseEntity.java

@@ -0,0 +1,18 @@
+package cn.iocoder.yudao.module.pms.job.httpEntity;
+
+import cn.iocoder.yudao.module.pms.job.IotZHBDJob;
+import lombok.Data;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className LoginResponseEntity
+ * @date 2025/6/8 16:56
+ * @description
+ */
+@Data
+public class LoginResponseEntity {
+    private int code;
+    private String msg;
+    private DataEntity data;
+}

+ 16 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/httpEntity/ResponseData.java

@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.pms.job.httpEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author yc
+ * @version 1.0
+ * @className ResponseData
+ * @date 2025/6/11 14:58
+ * @description
+ */
+public class ResponseData {
+    public List<Map<String,Object>> data;
+    public long time;
+}

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/DeviceServiceImpl.java

@@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.pms.dal.mysql.TDDeviceMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -53,4 +52,5 @@ public class DeviceServiceImpl implements IDeviceService {
     }
 
 
+
 }

+ 12 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -407,4 +407,16 @@
         update rqiot.rq_iot_opeation_fill_order set order_status = 2 where id = #{id}
     </update>
 
+
+    <select id="carList"
+            resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceZHBDDO">
+        select distinct device_code ,car_id  from rqiot.rq_iot_car_zhbd
+    </select>
+
+    <update id="upLocation"
+            parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceZHBDDO">
+        update rq_iot_device set location= #{location} where device_code = #{deviceCode}
+    </update>
+
+
 </mapper>