Kaynağa Gözat

Merge branch 'server-165' of uskycloud/usky-modules into master

gez 1 yıl önce
ebeveyn
işleme
b507d7401b
51 değiştirilmiş dosya ile 1888 ekleme ve 70 silme
  1. 53 0
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/config/mqtt/MqttInConfig.java
  2. 2 22
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/enums/TopListener.java
  3. 69 0
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/listener/MqttListener.java
  4. 1 0
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/mqtt/MqttStrategy.java
  5. 26 0
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/mqtt/SimpleContext.java
  6. 93 0
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/mqtt/alarm/Alarm.java
  7. 136 0
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/util/HttpClientUtils.java
  8. 1 1
      service-backend/service-backend-api/src/main/java/com/usky/backend/client/DeviceDataClient.java
  9. 26 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DataTVRequestVO.java
  10. 20 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DataTVResponseVO.java
  11. 19 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DeviceAttributeVO.java
  12. 33 0
      service-backend/service-backend-api/src/main/java/com/usky/backend/domain/ProductTVAttributeVO.java
  13. 2 1
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataRealTimeServiceImpl.java
  14. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanServiceImpl.java
  15. 5 2
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanSonServiceImpl.java
  16. 5 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionRecordServiceImpl.java
  17. 11 5
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java
  18. 3 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceInfoMapper.java
  19. 3 4
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java
  20. 80 4
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java
  21. 11 6
      service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml
  22. 2 2
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/MybatisGeneratorUtils.java
  23. 62 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpHj2017Controller.java
  24. 0 6
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpProjectConfigController.java
  25. 20 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpRtu2017Controller.java
  26. 19 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpSj2017Controller.java
  27. 142 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpHj2017.java
  28. 122 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpRtu2017.java
  29. 122 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpSj2017.java
  30. 18 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpHj2017Mapper.java
  31. 2 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpProjectConfigMapper.java
  32. 18 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpRtu2017Mapper.java
  33. 18 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpSj2017Mapper.java
  34. 21 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpHj2017Service.java
  35. 23 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpRtu2017Service.java
  36. 21 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpSj2017Service.java
  37. 102 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpHj2017ServiceImpl.java
  38. 2 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpProjectConfigServiceImpl.java
  39. 104 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpRtu2017ServiceImpl.java
  40. 96 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpSj2017ServiceImpl.java
  41. 79 8
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/YtDeviceStatusServiceImpl.java
  42. 42 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpHj2017RequestVO.java
  43. 42 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpRtu2017RequestVO.java
  44. 43 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpSj2017RequestVO.java
  45. 33 0
      service-issue/service-issue-biz/src/main/resources/mapper/issue/SpHj2017Mapper.xml
  46. 30 0
      service-issue/service-issue-biz/src/main/resources/mapper/issue/SpRtu2017Mapper.xml
  47. 30 0
      service-issue/service-issue-biz/src/main/resources/mapper/issue/SpSj2017Mapper.xml
  48. 17 7
      service-park/service-park-biz/src/main/java/com/usky/park/controller/web/DataStHistoryController.java
  49. 5 0
      service-park/service-park-biz/src/main/java/com/usky/park/domain/DataStHistory.java
  50. 14 0
      service-park/service-park-biz/src/main/java/com/usky/park/service/DataStHistoryService.java
  51. 39 0
      service-park/service-park-biz/src/main/java/com/usky/park/service/impl/DataStHistoryServiceImpl.java

+ 53 - 0
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/config/mqtt/MqttInConfig.java

@@ -0,0 +1,53 @@
+package com.usky.alarm.service.config.mqtt;
+
+import com.usky.alarm.service.enums.TopListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.integration.channel.DirectChannel;
+import org.springframework.integration.core.MessageProducer;
+import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter;
+import org.springframework.integration.mqtt.support.DefaultPahoMessageConverter;
+import org.springframework.messaging.MessageChannel;
+
+import java.util.List;
+
+/**
+ * @author yq
+ * @date 2021/11/1 16:37
+ */
+@ConditionalOnProperty(prefix = "mqtt", value = {"enabled"}, havingValue = "true")
+@Configuration
+public class MqttInConfig {
+
+    @Autowired
+    private MqttBaseConfig mqttBaseConfig;
+
+    public static final String CHANNEL_NAME_INPUT = "mqttInputChannel";
+
+    @Bean(name = CHANNEL_NAME_INPUT)
+    public MessageChannel mqttInputChannel() {
+        return new DirectChannel();
+    }
+
+
+    /**
+     * 消息订阅绑定-消费者
+     *
+     * @return
+     */
+    @Bean
+    public MessageProducer inbound() {
+        List<TopListener> parse = TopListener.parse(1);
+        String[] tops = parse.stream().map(TopListener::getCode).toArray(String[]::new);
+        String clientId = "h-backend-mqtt-in-" + System.currentTimeMillis();
+        MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(clientId,
+                mqttBaseConfig.mqttClientFactory(), tops);
+        adapter.setCompletionTimeout(mqttBaseConfig.getCompletionTimeout());
+        adapter.setConverter(new DefaultPahoMessageConverter());
+        adapter.setQos(2);
+        adapter.setOutputChannel(mqttInputChannel());
+        return adapter;
+    }
+}

+ 2 - 22
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/enums/TopListener.java

@@ -1,4 +1,4 @@
-package com.usky.iot.service.enums;
+package com.usky.alarm.service.enums;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -8,37 +8,17 @@ import java.util.List;
  * @date 2021/12/31 11:11
  */
 public enum TopListener {
-
-    /**
-     * 城运对接
-     */
-    MH_WATER_INFO("fireInfo","mh/water/info",1),
-    MH_WATER_ALERT("fireInfo","mh/water/alert",1),
-    MH_WATER_STATISTICS("fireInfo","mh/water/statistics",1),
-    DEVICE_INFO("fireInfo","device/info",1),
-    DEVICE_ALERT("fireInfo","device/alert",1),
-    DEVICE_DETAIL("fireInfo","device/detail",1),
-    DEVICE_AJ("fireInfo","device/aj",1),
-
     /**
-     * 全部设备对接
+     * 全部设备告警对接
      */
-    FIRE_INFO("fireInfo","/usky/ytDP0001/+/+/info",1),
     FIRE_ALERT("fireAlarm","/usky/ytDP0001/+/+/alarm",1),
-    WATER_INFO("waterInfo","/usky/ytDP0002/+/+/info",1),
     WATER_ALERT("waterAlert","/usky/ytDP0002/+/+/alarm",1),
-    SMOKE_INFO("smokeInfo","/usky/ytDP0003/+/+/info",1),
     SMOKE_ALERT("smokeAlarm","/usky/ytDP0003/+/+/alarm",1),
-    LIQUID_INFO("waterInfo","/usky/ytDP0005/+/+/info",1),
     LIQUID_ALERT("waterAlert","/usky/ytDP0005/+/+/alarm",1),
-    RTU_INFO("rtuinfo","/usky/ytDP0006/+/+/info",1),
     RTU_ALERT("rtuAlert","/usky/ytDP0006/+/+/alarm",1),
-    ELECTRICAL_INFO("electricalInfo","/usky/ytDP0007/+/+/info",1),
     ELECTRICAL_ALERT("electricalAlarm","/usky/ytDP0007/+/+/alarm",1),
-    MH_COVER_INFO("waterInfo","/usky/ytDP0008/+/+/info",1),
     MH_COVER_ALERT("waterAlert","/usky/ytDP0008/+/+/alarm",1),
     VIDEO_ALERT("videoAlert","/usky/ytCamCore/+/+/alarm",1),
-    LR_SMOKE_INFO("smokeInfo","/usky/ytDP00033/+/+/info",1),
     LR_SMOKE_ALERT("smokeAlarm","/usky/ytDP00033/+/+/alarm",1);
 
 

+ 69 - 0
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/listener/MqttListener.java

@@ -0,0 +1,69 @@
+package com.usky.alarm.service.listener;
+
+import com.usky.alarm.service.config.mqtt.MqttInConfig;
+import com.usky.alarm.service.enums.TopListener;
+import com.usky.alarm.service.mqtt.SimpleContext;
+import com.usky.alarm.service.vo.MqttBaseVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.messaging.MessageHandler;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author yq
+ * @date 2021/11/3 8:13
+ */
+@ConditionalOnProperty(prefix = "mqtt", value = {"enabled"}, havingValue = "true")
+@Slf4j
+@Component
+public class MqttListener {
+
+    public static final String MESSAGE_NAME = "messageInput";
+
+    @Autowired
+    private SimpleContext simpleContext;
+
+    /**
+     * 处理消息-消费者
+     *
+     * @return
+     */
+    @Bean(MESSAGE_NAME)
+    @ServiceActivator(inputChannel = MqttInConfig.CHANNEL_NAME_INPUT)
+    public MessageHandler handler() {
+        return message -> {
+            String payload = message.getPayload().toString();
+            //进行接口推送
+            String[] code1 = TopListener.FIRE_ALERT.getCode().split("/");
+            String[] code2 = TopListener.WATER_ALERT.getCode().split("/");
+            String[] code3 = TopListener.RTU_ALERT.getCode().split("/");
+            String[] code4 = TopListener.VIDEO_ALERT.getCode().split("/");
+            String[] code5 = TopListener.SMOKE_ALERT.getCode().split("/");
+            String[] code6 = TopListener.ELECTRICAL_ALERT.getCode().split("/");
+            String[] code7 = TopListener.LIQUID_ALERT.getCode().split("/");
+            Object mqttReceivedTopic = message.getHeaders().get("mqtt_receivedTopic");
+            if (null != mqttReceivedTopic) {
+                String topic = mqttReceivedTopic.toString();
+                MqttBaseVO mqttBaseVO = new MqttBaseVO();
+                mqttBaseVO.setTopic(topic);
+                if ((topic.indexOf(code1[2]) != -1 && topic.indexOf(code1[5]) != -1) ||
+                        (topic.indexOf(code2[2]) != -1 && topic.indexOf(code2[5]) != -1) ||
+                        (topic.indexOf(code3[2]) != -1 && topic.indexOf(code3[5]) != -1) ||
+                        (topic.indexOf(code4[2]) != -1 && topic.indexOf(code4[5]) != -1) ||
+                        (topic.indexOf(code5[2]) != -1 && topic.indexOf(code5[5]) != -1) ||
+                        (topic.indexOf(code6[2]) != -1 && topic.indexOf(code6[5]) != -1) ||
+                        (topic.indexOf(code7[2]) != -1 && topic.indexOf(code7[5]) != -1)) {
+                    mqttBaseVO.setDescribe("alarm");
+                }else {
+                    mqttBaseVO.setDescribe("fireInfoAndAlarm");
+                }
+                mqttBaseVO.setData(payload);
+                //统一处理数据
+                simpleContext.getResource(mqttBaseVO);
+            }
+        };
+    }
+}

+ 1 - 0
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/mqtt/MqttStrategy.java

@@ -1,6 +1,7 @@
 package com.usky.alarm.service.mqtt;
 
 
+import com.aliyuncs.exceptions.ClientException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.usky.alarm.service.vo.MqttBaseVO;
 

+ 26 - 0
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/mqtt/SimpleContext.java

@@ -0,0 +1,26 @@
+package com.usky.alarm.service.mqtt;
+
+
+import com.usky.alarm.service.vo.MqttBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 中间处理消息转发
+ */
+@Service
+public class SimpleContext {
+    @Autowired
+    private final Map<String, MqttStrategy> strategyMap = new ConcurrentHashMap<>();
+
+    public SimpleContext(Map<String, MqttStrategy> strategyMap) {
+        strategyMap.forEach(this.strategyMap::put);
+    }
+
+    public String getResource(MqttBaseVO mqttBaseVO) {
+        return strategyMap.get(mqttBaseVO.getDescribe()).disposeMessage(mqttBaseVO);
+    }
+}

+ 93 - 0
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/mqtt/alarm/Alarm.java

@@ -0,0 +1,93 @@
+package com.usky.alarm.service.mqtt.alarm;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.alarm.service.enums.TopListener;
+import com.usky.common.core.util.JsonUtils;
+import com.usky.alarm.domain.*;
+import com.usky.alarm.service.*;
+import com.usky.alarm.service.mqtt.MqttStrategy;
+import com.usky.alarm.service.vo.MqttBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author yq
+ * @date 2022/3/4 15:07
+ */
+@Service("alarm")
+public class Alarm implements MqttStrategy {
+
+    @Autowired
+    private BaseAlarmService baseAlarmService;
+
+    @Autowired
+    private DmpDeviceService dmpDeviceService;
+
+    @Override
+    public String disposeMessage(MqttBaseVO mqttBaseVO) {
+        Map map = JsonUtils.fromJson(mqttBaseVO.getData().toString(), Map.class);
+        List<Map<String, Object>> alarams = (List) JSONObject.parseArray(JSONObject.toJSONString(map.get("alarams")));
+        List<Map<String, Object>> dp = (List) JSONObject.parseArray(JSONObject.toJSONString(alarams.get(0).get("dp")));
+        BaseAlarm baseAlarm = new BaseAlarm();
+        long timestamp = Long.valueOf(alarams.get(0).get("timeStamp").toString()).longValue();
+        LocalDateTime time2 = LocalDateTime.ofEpochSecond(timestamp, 0, ZoneOffset.ofHours(8));
+        String topic = mqttBaseVO.getTopic();
+        String[] code4 = TopListener.VIDEO_ALERT.getCode().split("/");
+        LambdaQueryWrapper<DmpDevice> queryWrapper1 = Wrappers.lambdaQuery();
+        queryWrapper1.select(DmpDevice::getProductCode)
+                .eq(DmpDevice::getDeviceId, map.get("devId").toString())
+                .eq(DmpDevice::getDeleteFlag, 0);
+        List<DmpDevice> list = dmpDeviceService.list(queryWrapper1);
+        baseAlarm.setDeviceId(alarams.get(0).get("devId").toString());
+        baseAlarm.setAlarmTime(time2);
+        baseAlarm.setAlarmType(dp.get(0).get("serial").toString());
+        baseAlarm.setAlarmObject(alarams.get(0).get("deviceName").toString());
+        baseAlarm.setAlarmData(dp.get(0).get("status").toString());
+        baseAlarm.setAlarmAttribute(dp.get(0).get("property").toString());
+        if (alarams.get(0).get("deviceType").equals("1")){
+            baseAlarm.setAlarmContent(dp.get(0).get("property").toString()+","+dp.get(0).get("value").toString());
+            baseAlarm.setAlarmGrade(1);
+            baseAlarm.setAlarmAddress(dp.get(0).get("value").toString());
+        }else if (alarams.get(0).get("deviceType").equals("2")){
+            baseAlarm.setAlarmContent(dp.get(0).get("property").toString()+","+dp.get(0).get("value").toString());
+            baseAlarm.setAlarmGrade(2);
+            baseAlarm.setAlarmAddress(alarams.get(0).get("deviceName").toString());
+        }else if (alarams.get(0).get("deviceType").equals("3")){
+            baseAlarm.setAlarmContent(dp.get(0).get("property").toString());
+            baseAlarm.setAlarmGrade(2);
+            baseAlarm.setAlarmAddress(alarams.get(0).get("deviceName").toString());
+        }else if (alarams.get(0).get("deviceType").equals("6")){
+            baseAlarm.setAlarmContent(dp.get(0).get("property").toString()+","+dp.get(0).get("stuname").toString());
+            baseAlarm.setAlarmGrade(2);
+            baseAlarm.setAlarmAddress(alarams.get(0).get("deviceName").toString());
+        }else if (alarams.get(0).get("deviceType").equals("7")){
+            baseAlarm.setAlarmContent(dp.get(0).get("property").toString());
+            baseAlarm.setAlarmGrade(2);
+            baseAlarm.setAlarmAddress(alarams.get(0).get("deviceName").toString());
+        }else if (topic.indexOf(code4[2]) != -1 && topic.indexOf(code4[5]) != -1){
+            baseAlarm.setAlarmContent(dp.get(0).get("property").toString());
+            baseAlarm.setAlarmGrade(2);
+            baseAlarm.setAlarmAddress(alarams.get(0).get("deviceName").toString());
+            baseAlarm.setSitePhoto(dp.get(0).get("value").toString());
+        }
+        if (CollectionUtils.isNotEmpty(list)) {
+            baseAlarm.setProductCode(list.get(0).getProductCode());
+            try {
+                Boolean addFlag = baseAlarmService.add(baseAlarm);
+            }catch (Exception a){
+
+            }
+        }
+        return null;
+    }
+
+
+}

+ 136 - 0
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/util/HttpClientUtils.java

@@ -0,0 +1,136 @@
+package com.usky.alarm.service.util;
+
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ 1. 跨域请求工具类
+ */
+public class HttpClientUtils {
+
+    public static String doGet(String url, Map<String, String> param) {
+
+        // 创建Httpclient对象
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+
+        String resultString = "";
+        CloseableHttpResponse response = null;
+        try {
+            // 创建uri
+            URIBuilder builder = new URIBuilder(url);
+            if (param != null) {
+                for (String key : param.keySet()) {
+                    builder.addParameter(key, param.get(key));
+                }
+            }
+            URI uri = builder.build();
+
+            // 创建http GET请求
+            HttpGet httpGet = new HttpGet(uri);
+
+            // 执行请求
+            response = httpclient.execute(httpGet);
+            // 判断返回状态是否为200
+            if (response.getStatusLine().getStatusCode() == 200) {
+                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (response != null) {
+                    response.close();
+                }
+                httpclient.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return resultString;
+    }
+
+    public static String doGet(String url) {
+        return doGet(url, null);
+    }
+
+    public static String doPost(String url, Map<String, String> param) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            // 创建参数列表
+            if (param != null) {
+                List<NameValuePair> paramList = new ArrayList<>();
+                for (String key : param.keySet()) {
+                    paramList.add(new BasicNameValuePair(key, param.get(key)));
+                }
+                // 模拟表单
+                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
+                httpPost.setEntity(entity);
+            }
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                response.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return resultString;
+    }
+
+    public static String doPost(String url) {
+        return doPost(url, null);
+    }
+
+    public static String doPostJson(String url, String json) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            // 创建请求内容
+            StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
+            httpPost.setEntity(entity);
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                response.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return resultString;
+    }
+}

+ 1 - 1
service-backend/service-backend-api/src/main/java/com/usky/backend/client/DeviceDataClient.java

@@ -13,5 +13,5 @@ import java.util.List;
 public interface DeviceDataClient {
 
     @RequestMapping(value = "data")
-    List<DataRealTimeResponseVO> data(@RequestParam("productCode") String productCode, @RequestParam(value = "deviceIds") List<String> deviceIds);
+    List<DataRealTimeResponseVO> data(@RequestParam(value = "productCode",required = false) String productCode, @RequestParam(value = "deviceIds",required = false) List<String> deviceIds);
 }

+ 26 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DataTVRequestVO.java

@@ -0,0 +1,26 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DataTVRequestVO implements Serializable {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+    /**
+     * 设备类型
+     */
+    private Integer deviceType;
+    /**
+     * 设备Id
+     */
+    private String deviceId;
+}

+ 20 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DataTVResponseVO.java

@@ -0,0 +1,20 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class DataTVResponseVO implements Serializable {
+    //设备Id
+    private String deviceId;
+    //设备名称
+    private String deviceName;
+    //设备类型编码
+    private Integer deviceType;
+    //安装位置
+    private String installAddress;
+    //设备属性集合
+    private List<DeviceAttributeVO> dp;
+}

+ 19 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/DeviceAttributeVO.java

@@ -0,0 +1,19 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DeviceAttributeVO implements Serializable {
+    //属性编码
+    private String code;
+    //属性名称
+    private String name;
+    //属性值
+    private String value;
+    //单位
+    private String unit;
+    //上报时间
+    private String time;
+}

+ 33 - 0
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/ProductTVAttributeVO.java

@@ -0,0 +1,33 @@
+package com.usky.backend.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ProductTVAttributeVO implements Serializable {
+    /**
+     * 产品ID
+     */
+    private Integer productId;
+
+    /**
+     * 属性标识
+     */
+    private String attributeCode;
+
+    /**
+     * 属性名称
+     */
+    private String attributeName;
+
+    /**
+     * 单位
+     */
+    private String attributeUnit;
+
+    /**
+     * 产品编码
+     */
+    private String productCode;
+}

+ 2 - 1
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataRealTimeServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.backend.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.backend.domain.DataRealTime;
 import com.usky.backend.domain.request.DataRealTimeRequestVO;
@@ -31,7 +32,7 @@ public class DataRealTimeServiceImpl extends AbstractCrudService<DataRealTimeMap
         List<DataRealTimeResponseVO> responseVOList = new ArrayList<>();
 
         LambdaQueryWrapper<DataRealTime> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(DataRealTime::getProductCode, productCode)
+        queryWrapper.eq(StringUtils.isNotBlank(productCode),DataRealTime::getProductCode, productCode)
                 .in(DataRealTime::getDeviceId, deviceIds);
         List<DataRealTime> list = this.list(queryWrapper);
         if(CollectionUtils.isNotEmpty(list)){

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanServiceImpl.java

@@ -210,7 +210,7 @@ public class PatrolInspectionPlanServiceImpl extends AbstractCrudService<PatrolI
 //                day = OnlineMethod.fun(patrolInspectionPlanVo.getStartDate(), patrolInspectionPlanVo.getEndDate())+1;
 //            }
 
-            String timeStr1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            String timeStr1 = patrolInspectionPlanVo.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
             for (int i = 0; i < day; i++) {
                 for (int j = 0; j < patrolInspectionPlanVo.getPlanScheduleList().size(); j++) {
                     LocalDate s = OnlineMethod.getDate(timeStr1, "yyyy-MM-dd", true, i);

+ 5 - 2
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanSonServiceImpl.java

@@ -256,7 +256,9 @@ public class PatrolInspectionPlanSonServiceImpl extends AbstractCrudService<Patr
         queryWrapperOne.select(PatrolInspectionArea::getId, PatrolInspectionArea::getAreaName)
                 .eq(PatrolInspectionArea::getId, planSonList.get(0).getAreaId());
         List<PatrolInspectionArea> areaList = patrolInspectionAreaService.list(queryWrapperOne);
-
+        if (areaList.isEmpty()) {
+            throw new BusinessException("巡检区域不存在");
+        }
         PatrolInspectionRecord patrolInspectionRecord = new PatrolInspectionRecord();
         patrolInspectionRecord.setSiteNubmber(planRecordVo.getSiteNubmber());
         patrolInspectionRecord.setSiteType(planRecordVo.getSiteType());
@@ -768,7 +770,8 @@ public class PatrolInspectionPlanSonServiceImpl extends AbstractCrudService<Patr
                 patrolInspectionPlanSonVo.setUndetectedSiteCount(0);
                 //计划名称
                 for (int j = 0; j < planList.size(); j++) {
-                    if (planSonList.get(i).getPlanId() == planList.get(j).getId()) {
+                    if (planSonList.get(i).getPlanId().equals(planList.get(j).getId())) {
+                        patrolInspectionPlanSonVo.setPlanId(planList.get(j).getId());
                         patrolInspectionPlanSonVo.setPlanName(planList.get(j).getPlanName());
                     }
                 }

+ 5 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionRecordServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.fire.domain.*;
@@ -93,7 +94,9 @@ public class PatrolInspectionRecordServiceImpl extends AbstractCrudService<Patro
         queryWrapper.eq(PatrolInspectionRecord::getTenantId, SecurityUtils.getTenantId())
                 .eq(PatrolInspectionRecord::getId, id);
         List<PatrolInspectionRecord> patrolInspectionRecordList = this.list(queryWrapper);
-
+        if (patrolInspectionRecordList.isEmpty()) {
+            throw new BusinessException("巡检记录不存在");
+        }
         //上传图片查询
         LambdaQueryWrapper<PatrolInspectionRecordPicture> queryWrapperOne = Wrappers.lambdaQuery();
         queryWrapperOne.eq(PatrolInspectionRecordPicture::getRecordId, id);
@@ -195,6 +198,7 @@ public class PatrolInspectionRecordServiceImpl extends AbstractCrudService<Patro
             patrolInspectionRecordVo.setTenantId(patrolInspectionRecordList.get(i).getTenantId());
             patrolInspectionRecordVo.setCompanyId(patrolInspectionRecordList.get(i).getCompanyId());
             patrolInspectionRecordVo.setCreator(patrolInspectionRecordList.get(i).getCreator());
+            patrolInspectionRecordVo.setRemarks(patrolInspectionRecordList.get(i).getRemarks());
             patrolInspectionRecordVo.setRecordPictureList(patrolInspectionRecordPictureList);
             patrolInspectionRecordVo.setContentVoList(patrolInspectionContentVoList);
             list.add(patrolInspectionRecordVo);

+ 11 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/DmpDeviceInfoController.java

@@ -4,10 +4,7 @@ package com.usky.iot.controller.web;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.usky.backend.domain.DataAverageExportVO;
-import com.usky.backend.domain.DataAverageRequestVO;
-import com.usky.backend.domain.DataAverageResponseVO;
-import com.usky.backend.domain.DataTotalRequestVO;
+import com.usky.backend.domain.*;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.utils.poi.ExcelUtil;
@@ -138,7 +135,16 @@ public class DmpDeviceInfoController {
         return ApiResult.success(dmpDeviceInfoService.deviceCurrentDataList(deviceName,installAddress,productCode,pageNum,pageSize));
     }
 
-
+    /**
+     * 监控电视墙实时数据接口
+     *
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("dataTVList")
+    public ApiResult<CommonPage<DataTVResponseVO>> dataTVList(@RequestBody DataTVRequestVO requestVO){
+        return ApiResult.success(dmpDeviceInfoService.dataTVList(requestVO));
+    }
 
     /**
      * 获取设备某个时间端内的汇总值

+ 3 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceInfoMapper.java

@@ -2,6 +2,7 @@ package com.usky.iot.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.backend.domain.ProductTVAttributeVO;
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpDeviceInfo;
 import com.usky.iot.domain.DmpProductInfo;
@@ -24,4 +25,6 @@ public interface DmpDeviceInfoMapper extends CrudMapper<DmpDeviceInfo> {
     List<DmpProductInfo> getProductInfo(String productCode);
 
     Page<DmpDeviceInfo> page(IPage<DmpDeviceInfo> page, @Param("ar")DmpDeviceInfoRequest dmpDeviceInfoRequest, @Param("tenantId") Integer tenantId);
+
+    List<ProductTVAttributeVO> attributeList(@Param("procutIdList") List<Integer> productIdList);
 }

+ 3 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java

@@ -1,9 +1,6 @@
 package com.usky.iot.service;
 
-import com.usky.backend.domain.DataAverageExportVO;
-import com.usky.backend.domain.DataAverageRequestVO;
-import com.usky.backend.domain.DataAverageResponseVO;
-import com.usky.backend.domain.DataTotalRequestVO;
+import com.usky.backend.domain.*;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.DmpDeviceInfo;
@@ -64,6 +61,8 @@ public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
 
     CommonPage<Object> deviceCurrentDataList(String deviceName,String installAddress,String productCode,Integer pageNum,Integer pageSize);
 
+    CommonPage<DataTVResponseVO> dataTVList(DataTVRequestVO requestVO);
+
     List<Map<String,Object>> deviceDataTotal(DataTotalRequestVO requestVO);
     List<DataAverageResponseVO> deviceDataAverage(DataAverageRequestVO requestVO);
     List<DataAverageExportVO> DataAverageExport(DataAverageRequestVO requestVO);

+ 80 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -18,10 +18,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mysql.cj.x.protobuf.MysqlxDatatypes;
 import com.usky.backend.client.DataQueryClient;
 import com.usky.backend.client.DeviceDataClient;
-import com.usky.backend.domain.DataAverageExportVO;
-import com.usky.backend.domain.DataAverageRequestVO;
-import com.usky.backend.domain.DataAverageResponseVO;
-import com.usky.backend.domain.DataTotalRequestVO;
+import com.usky.backend.domain.*;
 import com.usky.backend.domain.response.DataRealTimeResponseVO;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
@@ -34,12 +31,14 @@ import com.usky.iot.mapper.DmpDeviceInfoMapper;
 import com.usky.iot.service.BaseFacilityDeviceService;
 import com.usky.iot.service.DmpDeviceInfoService;
 import com.usky.iot.service.DmpDeviceStatusService;
+import com.usky.iot.service.DmpProductAttributeService;
 import com.usky.iot.service.vo.*;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
+import sun.net.dns.ResolverConfiguration;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
@@ -62,6 +61,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     @Autowired
     private DmpDeviceStatusService dmpDeviceStatusService;
 
+    @Autowired
+    private DmpProductAttributeService dmpProductAttributeService;
+
     @Autowired
     private BaseFacilityDeviceService baseFacilityDeviceService;
 
@@ -571,6 +573,80 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         return new CommonPage<>(objectList,total,pageNum,pageSize);
     }
 
+    @Override
+    public CommonPage<DataTVResponseVO> dataTVList(DataTVRequestVO requestVO){
+        List<DataTVResponseVO> list = new ArrayList<>();
+
+        IPage<DmpDeviceInfo> page = new Page<>(requestVO.getCurrent(), requestVO.getSize());
+        LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(DmpDeviceInfo::getProductId,DmpDeviceInfo::getDeviceId,DmpDeviceInfo::getDeviceName,DmpDeviceInfo::getDeviceType,DmpDeviceInfo::getInstallAddress)
+                .eq(DmpDeviceInfo::getTenantId,SecurityUtils.getTenantId())
+                .eq(requestVO.getDeviceType() != null,DmpDeviceInfo::getDeviceType,requestVO.getDeviceType())
+                .eq(StringUtils.isNotBlank(requestVO.getDeviceId()),DmpDeviceInfo::getDeviceId,requestVO.getDeviceId())
+                .orderByDesc(DmpDeviceInfo::getId);
+        page = this.page(page,queryWrapper);
+        if(page.getSize() <=0){
+            return new CommonPage<>(list,0,requestVO.getSize(),requestVO.getCurrent());
+        }
+
+        if(page.getRecords().size() > 0){
+            List<String> deviceIdList = new ArrayList<>();
+            List<Integer> productIdList = new ArrayList<>();
+            for(int i=0;i<page.getRecords().size();i++){
+                deviceIdList.add(page.getRecords().get(i).getDeviceId());
+                if(!productIdList.contains(page.getRecords().get(i).getProductId())){
+                    productIdList.add(page.getRecords().get(i).getProductId());
+                }
+            }
+
+            List<ProductTVAttributeVO> attributeVOList = baseMapper.attributeList(productIdList);
+
+            if(deviceIdList.size() > 0){
+                List<DataRealTimeResponseVO> dataRealList = deviceDataClient.data(null,deviceIdList);
+                for(int i=0;i<page.getRecords().size();i++){
+                    DataTVResponseVO dataTVResponseVO = new DataTVResponseVO();
+                    dataTVResponseVO.setDeviceId(page.getRecords().get(i).getDeviceId());
+                    dataTVResponseVO.setDeviceName(page.getRecords().get(i).getDeviceName());
+                    dataTVResponseVO.setDeviceType(page.getRecords().get(i).getDeviceType());
+                    dataTVResponseVO.setInstallAddress(page.getRecords().get(i).getInstallAddress());
+                    List<DeviceAttributeVO> list1 = new ArrayList<>();
+                    if(dataRealList.size() > 0){
+                        for (int j = 0; j < dataRealList.size(); j++) {
+                            if(page.getRecords().get(i).getDeviceId().equals(dataRealList.get(j).getDeviceId())){
+                                DeviceAttributeVO attributeVO = new DeviceAttributeVO();
+                                attributeVO.setCode(dataRealList.get(j).getAttributeName());
+                                attributeVO.setValue(dataRealList.get(j).getAttributeData());
+                                attributeVO.setTime(""+dataRealList.get(j).getDataTime());
+                                if((attributeVOList.size() >0)){
+                                    for (int k = 0; k < attributeVOList.size(); k++) {
+                                        if((dataRealList.get(j).getProductCode().equals(attributeVOList.get(k).getProductCode())) && (dataRealList.get(j).getAttributeName().equals(attributeVOList.get(k).getAttributeCode()))){
+                                            if(Objects.nonNull(attributeVOList.get(k).getAttributeName())){
+                                                attributeVO.setName(attributeVOList.get(k).getAttributeName());
+                                            }
+                                            if(Objects.nonNull(attributeVOList.get(k).getAttributeUnit())){
+                                                attributeVO.setUnit(attributeVOList.get(k).getAttributeUnit());
+                                            }
+                                            break;
+                                        }
+                                    }
+                                }
+
+                                list1.add(attributeVO);
+                            }
+                        }
+                    }
+                    dataTVResponseVO.setDp(list1);
+                    list.add(dataTVResponseVO);
+                }
+
+
+            }
+        }
+
+
+        return new CommonPage<>(list,page.getTotal(),page.getSize(),page.getCurrent());
+    }
+
     @Override
     public List<Map<String,Object>> deviceDataTotal(DataTotalRequestVO requestVO){
         List<Map<String,Object>> list = dataQueryClient.deviceDataTotal(requestVO);

+ 11 - 6
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

@@ -57,15 +57,20 @@
         </where>
     </select>
 
-    <select id="getProductInfo" resultType="com.usky.iot.domain.DmpProductInfo">
-        select dpi.*
-        from dmp_product dpi
+    <select id="attributeList" resultType="com.usky.backend.domain.ProductTVAttributeVO">
+        select dpa.product_id as productId,dpa.attribute_code as attributeCode,dpa.attribute_name as attributeName,dpa.attribute_unit as attributeUnit,dpt.product_code as productCode
+        from dmp_product_attribute dpa
+        left join dmp_product dpt
+        on dpa.product_id = dpt.id
         <where>
-            <if test="productCode != null">
-                and dpi.product_code = #{productCode}
+            <if test="procutIdList != null and procutIdList.size() > 0">
+                AND dpa.product_id in
+                <foreach item="item" collection="procutIdList" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
             <if test="1 == 1">
-                and dpi.delete_flag = 0
+                and dpa.delete_flag = 0
             </if>
         </where>
     </select>

+ 2 - 2
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/MybatisGeneratorUtils.java

@@ -43,7 +43,7 @@ public class MybatisGeneratorUtils {
         //2、数据源配置
         //修改数据源
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://47.98.201.187:3306/UskyOw?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setUrl("jdbc:mysql://47.98.201.187:3306/jdxf?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
         dsc.setDriverName("com.mysql.jdbc.Driver");
         dsc.setUsername("fuYuChuan");
         dsc.setPassword("fuYuChuan@123");
@@ -71,7 +71,7 @@ public class MybatisGeneratorUtils {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("yt_device_status");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude(new String[]{"sp_rtu2017", "sp_sj2017"});  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 62 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpHj2017Controller.java

@@ -0,0 +1,62 @@
+package com.usky.issue.controller.web;
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.issue.annotation.CheckSign;
+import com.usky.issue.service.SpHj2017Service;
+import com.usky.issue.service.SpRtu2017Service;
+import com.usky.issue.service.SpSj2017Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@RestController
+@RequestMapping("/spHj2017")
+public class SpHj2017Controller {
+    @Autowired
+    private SpHj2017Service spHj2017Service;
+    @Autowired
+    private SpSj2017Service spSj2017Service;
+    @Autowired
+    private SpRtu2017Service spRtu2017Service;
+
+    @CheckSign
+    @PostMapping("eventList")
+    ApiResult<Map<String, Object>> eventList(@RequestBody String requestBody) {
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("firaAlarm", spHj2017Service.statusCount(requestBody));
+        resultMap.put("waterAlarm", spSj2017Service.statusCount(requestBody));
+        resultMap.put("rtuAlarm", spRtu2017Service.statusCount(requestBody));
+            return ApiResult.success(resultMap);
+    }
+
+    @CheckSign
+    @PostMapping("listCount")
+    ApiResult<Map<String, Object>> countList(@RequestBody String requestBody) {
+        List<Map<String, Object>> typeList1 = spHj2017Service.typeList(requestBody);
+        Long untreatedCount1 = (Long) typeList1.get(0).get("untreated");
+        Long processedCount11 = (Long) typeList1.get(0).get("processed");
+        List<Map<String, Object>> typeList2 = spSj2017Service.typeList(requestBody);
+        Long untreatedCount2 = (Long) typeList2.get(0).get("untreated");
+        Long processedCount22 = (Long) typeList2.get(0).get("processed");
+        List<Map<String, Object>> typeList3 = spRtu2017Service.typeList(requestBody);
+        Long untreatedCount3 = (Long) typeList3.get(0).get("untreated");
+        Long processedCount33 = (Long) typeList3.get(0).get("processed");
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("unprocess", untreatedCount1+untreatedCount2+untreatedCount3);
+        resultMap.put("processing",0);
+        resultMap.put("processed", processedCount11+processedCount22+processedCount33);
+            return ApiResult.success(resultMap);
+    }
+
+
+}
+

+ 0 - 6
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpProjectConfigController.java

@@ -21,11 +21,5 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/spProjectConfig")
 public class SpProjectConfigController {
-    @Autowired
-    SpProjectConfigService spProjectConfigService;
-    @PostMapping("/getCompanyCode")
-    ApiResult<String> getCompanyCode(@RequestBody SpProjectConfigRequestVO requestVO) {
-        return ApiResult.success(spProjectConfigService.getCompanyCode(requestVO));
-    }
 
 }

+ 20 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpRtu2017Controller.java

@@ -0,0 +1,20 @@
+package com.usky.issue.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@RestController
+@RequestMapping("/spRtu2017")
+public class SpRtu2017Controller {
+
+}
+

+ 19 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpSj2017Controller.java

@@ -0,0 +1,19 @@
+package com.usky.issue.controller.web;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * asf 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@RestController
+@RequestMapping("/spSj2017")
+public class SpSj2017Controller {
+
+}
+

+ 142 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpHj2017.java

@@ -0,0 +1,142 @@
+package com.usky.issue.domain;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SpHj2017 implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private String port;
+
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime time;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 地址 ip
+     */
+    private String address;
+
+    /**
+     * 防火分区
+     */
+    private String compartment;
+
+    /**
+     * 火警流程
+     */
+    private String fireprocess;
+
+    private LocalDateTime flowendtime;
+
+    /**
+     * 命令码
+     */
+    private String ncmd;
+
+    /**
+     * 备用字段
+     */
+    private String data1;
+
+    /**
+     * 类型
+     */
+    private String data2;
+
+    /**
+     * 命令源码
+     */
+    private String data3;
+
+    /**
+     * 回路地址
+     */
+    private String data4;
+
+    /**
+     * 部件位置信息
+     */
+    private String data5;
+
+    /**
+     * 处理类型
+     */
+    private String cllx;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime clsj;
+
+    /**
+     * 处理人
+     */
+    private String clr;
+
+    /**
+     * 处理内容
+     */
+    private String clnr;
+
+    /**
+     * 处理误报(1 误报  0 非误报)
+     */
+    private String clwb;
+
+    /**
+     * 联系人
+     */
+    private String cllxr;
+
+    /**
+     * 联系电话
+     */
+    private String cldh;
+
+    /**
+     * 处理状态
+     */
+    private Integer clzt;
+
+    /**
+     * 视频地址
+     */
+    private String video;
+
+
+}

+ 122 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpRtu2017.java

@@ -0,0 +1,122 @@
+package com.usky.issue.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SpRtu2017 implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private String port;
+
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime time;
+
+    /**
+     * 开关状态 1关闭(连接) 0开启(断开)
+     */
+    private String status;
+
+    /**
+     * 地址 ip
+     */
+    private String address;
+
+    /**
+     * 命令码
+     */
+    private String ncmd;
+
+    /**
+     * 备用字段
+     */
+    private String data1;
+
+    /**
+     * 状态
+     */
+    private String data2;
+
+    /**
+     * 备用字段
+     */
+    private String data3;
+
+    /**
+     * 名称
+     */
+    private String data4;
+
+    /**
+     * 备用字段
+     */
+    private String data5;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime clsj;
+
+    /**
+     * 处理人
+     */
+    private String clr;
+
+    /**
+     * 处理内容
+     */
+    private String clnr;
+
+    private String clwb;
+
+    /**
+     * 联系人
+     */
+    private String cllxr;
+
+    /**
+     * 联系电话
+     */
+    private String cldh;
+
+    /**
+     * 处理状态
+     */
+    private Integer clzt;
+
+    private String cllx;
+
+    /**
+     * 视频地址
+     */
+    private String video;
+
+
+}

+ 122 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpSj2017.java

@@ -0,0 +1,122 @@
+package com.usky.issue.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * asf
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SpSj2017 implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private String port;
+
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime time;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 地址 ip
+     */
+    private String address;
+
+    /**
+     * 命令码
+     */
+    private String ncmd;
+
+    /**
+     * 报警类型0 正常 1 低压 2高压 3故障 4离线
+     */
+    private String data1;
+
+    /**
+     * 电池电量
+     */
+    private String data2;
+
+    /**
+     * 信号强度
+     */
+    private String data3;
+
+    /**
+     * 压力值 mpa
+     */
+    private String data4;
+
+    /**
+     * 物联网卡号
+     */
+    private String data5;
+
+    /**
+     * 联系人
+     */
+    private String cllxr;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime clsj;
+
+    /**
+     * 处理人
+     */
+    private String clr;
+
+    /**
+     * 处理内容
+     */
+    private String clnr;
+
+    private String clwb;
+
+    /**
+     * 联系电话
+     */
+    private String cldh;
+
+    /**
+     * 处理状态
+     */
+    private Integer clzt;
+
+    private String cllx;
+
+    /**
+     * 视频地址
+     */
+    private String video;
+
+
+}

+ 18 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpHj2017Mapper.java

@@ -0,0 +1,18 @@
+package com.usky.issue.mapper;
+
+import com.usky.issue.domain.SpHj2017;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Repository
+public interface SpHj2017Mapper extends CrudMapper<SpHj2017> {
+
+}

+ 2 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpProjectConfigMapper.java

@@ -1,5 +1,6 @@
 package com.usky.issue.mapper;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.usky.issue.domain.SpProjectConfig;
 import com.usky.common.mybatis.core.CrudMapper;
 import org.apache.ibatis.annotations.Param;
@@ -13,6 +14,7 @@ import org.springframework.stereotype.Repository;
  * @author fu
  * @since 2023-12-11
  */
+@DS("UskyOw")
 @Repository
 public interface SpProjectConfigMapper extends CrudMapper<SpProjectConfig> {
     String getCompanyCode(@Param("appKey") String appKey);

+ 18 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpRtu2017Mapper.java

@@ -0,0 +1,18 @@
+package com.usky.issue.mapper;
+
+import com.usky.issue.domain.SpRtu2017;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Repository
+public interface SpRtu2017Mapper extends CrudMapper<SpRtu2017> {
+
+}

+ 18 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpSj2017Mapper.java

@@ -0,0 +1,18 @@
+package com.usky.issue.mapper;
+
+import com.usky.issue.domain.SpSj2017;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * asf Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Repository
+public interface SpSj2017Mapper extends CrudMapper<SpSj2017> {
+
+}

+ 21 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpHj2017Service.java

@@ -0,0 +1,21 @@
+package com.usky.issue.service;
+
+import com.usky.issue.domain.SpHj2017;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+public interface SpHj2017Service extends CrudService<SpHj2017> {
+    List<Map<String, Object>> statusCount(String requestBody);
+    List<Map<String, Object>> typeList(String requestBody);
+    Integer countDevice (String requestBody);
+}

+ 23 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpRtu2017Service.java

@@ -0,0 +1,23 @@
+package com.usky.issue.service;
+
+import com.usky.issue.domain.SpRtu2017;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+public interface SpRtu2017Service extends CrudService<SpRtu2017> {
+    List<Map<String, Object>> statusCount(String requestBody);
+
+    List<Map<String, Object>> typeList(String requestBody);
+
+    Integer countDevice(String requestBody);
+}

+ 21 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpSj2017Service.java

@@ -0,0 +1,21 @@
+package com.usky.issue.service;
+
+import com.usky.issue.domain.SpSj2017;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * asf 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+public interface SpSj2017Service extends CrudService<SpSj2017> {
+    List<Map<String, Object>> statusCount(String requestBody);
+    List<Map<String, Object>> typeList(String deviceCode);
+    Integer countDevice(String requestBody);
+}

+ 102 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpHj2017ServiceImpl.java

@@ -0,0 +1,102 @@
+package com.usky.issue.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+import com.usky.common.core.exception.BusinessException;
+import com.usky.issue.domain.SpHj2017;
+import com.usky.issue.domain.SpRtu2017;
+import com.usky.issue.mapper.SpHj2017Mapper;
+import com.usky.issue.service.SpHj2017Service;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Service
+public class SpHj2017ServiceImpl extends AbstractCrudService<SpHj2017Mapper, SpHj2017> implements SpHj2017Service {
+    @Override
+    public List<Map<String, Object>> statusCount(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        String startTimeString = requestVO.get("startTime").toString();
+        String endTimeString = requestVO.get("endTime").toString();
+        Integer currentPage = (Integer) requestVO.get("current");
+        Integer pageSize = (Integer) requestVO.get("size");
+        int startIndex = (currentPage - 1) * pageSize;
+        QueryWrapper<SpHj2017> queryWrapper = Wrappers.query();
+        queryWrapper.select("DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') AS alarm_time", "data2 AS alarm_type", "data4 AS alarm_point", "device_code")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "' AND dwtype IN (1,3)");
+        if (StringUtils.isBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isNotBlank(endTimeString)) {
+            // 如果同时传了 startTime 和 endTime
+            queryWrapper.between("time", startTimeString, endTimeString);
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+            // 如果只传了 startTime
+            queryWrapper.between("time", startTimeString, LocalDateTime.now().toString());
+        } else if (StringUtils.isNotBlank(endTimeString) && StringUtils.isBlank(startTimeString)) {
+            // 如果只传了 endTime
+            queryWrapper.le("time", endTimeString);
+        } else {
+            throw new BusinessException("时间参数错误");
+        }
+        queryWrapper.last("LIMIT " + pageSize + " OFFSET " + startIndex)
+                .orderByDesc("id");
+        List<Map<String, Object>> deviceStatusList = this.listMaps(queryWrapper);
+
+        return deviceStatusList;
+    }
+
+    public List<Map<String, Object>> typeList(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        String startTimeString = requestVO.get("startTime").toString();
+        String endTimeString = requestVO.get("endTime").toString();
+        QueryWrapper<SpHj2017> queryWrapper1 = Wrappers.query();
+        queryWrapper1.select("COUNT(CASE WHEN clzt = 0 THEN 1 ELSE NULL END) AS untreated", "COUNT(CASE WHEN clzt = 1 THEN 1 ELSE NULL END) AS processed")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "' AND dwtype IN (1,3)");
+        if (StringUtils.isBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isNotBlank(endTimeString)) {
+            // 如果同时传了 startTime 和 endTime
+            queryWrapper1.between("time", startTimeString, endTimeString);
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+            // 如果只传了 startTime
+            queryWrapper1.between("time", startTimeString, LocalDateTime.now().toString());
+        } else if (StringUtils.isNotBlank(endTimeString) && StringUtils.isBlank(startTimeString)) {
+            // 如果只传了 endTime
+            queryWrapper1.le("time", endTimeString);
+        } else {
+            throw new BusinessException("时间参数错误");
+        }
+        List<Map<String, Object>> deviceStatusList1 = this.listMaps(queryWrapper1);
+        return deviceStatusList1;
+    }
+
+    public Integer countDevice(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+
+        QueryWrapper<SpHj2017> queryWrapper1 = Wrappers.query();
+        queryWrapper1.select("DISTINCT device_code")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "'");
+        List<SpHj2017> SpHj2017 = this.list(queryWrapper1);
+
+        Integer deviceCount = SpHj2017.size();
+
+        return deviceCount;
+    }
+
+}

+ 2 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpProjectConfigServiceImpl.java

@@ -1,5 +1,6 @@
 package com.usky.issue.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.usky.issue.domain.SpProjectConfig;
 import com.usky.issue.mapper.SpProjectConfigMapper;
 import com.usky.issue.service.SpProjectConfigService;
@@ -16,6 +17,7 @@ import org.springframework.stereotype.Service;
  * @author fu
  * @since 2023-12-11
  */
+@DS("UskyOw")
 @Service
 public class SpProjectConfigServiceImpl extends AbstractCrudService<SpProjectConfigMapper, SpProjectConfig> implements SpProjectConfigService {
     @Autowired

+ 104 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpRtu2017ServiceImpl.java

@@ -0,0 +1,104 @@
+package com.usky.issue.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+import com.usky.common.core.exception.BusinessException;
+import com.usky.issue.domain.SpRtu2017;
+import com.usky.issue.mapper.SpRtu2017Mapper;
+import com.usky.issue.service.SpRtu2017Service;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Service
+public class SpRtu2017ServiceImpl extends AbstractCrudService<SpRtu2017Mapper, SpRtu2017> implements SpRtu2017Service {
+
+    @Override
+    public List<Map<String, Object>> statusCount(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        String startTimeString = requestVO.get("startTime").toString();
+        String endTimeString = requestVO.get("endTime").toString();
+        Integer currentPage = (Integer) requestVO.get("current");
+        Integer pageSize = (Integer) requestVO.get("size");
+        int startIndex = (currentPage - 1) * pageSize;
+        QueryWrapper<SpRtu2017> queryWrapper = Wrappers.query();
+        queryWrapper.select("DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') AS alarm_time", "data2 AS alarm_type", "data4 AS alarm_point", "device_code")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "' AND dwtype = 6");
+        if (StringUtils.isBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isNotBlank(endTimeString)) {
+            // 如果同时传了 startTime 和 endTime
+            queryWrapper.between("time", startTimeString, endTimeString);
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+            // 如果只传了 startTime
+            queryWrapper.between("time", startTimeString, LocalDateTime.now().toString());
+        } else if (StringUtils.isNotBlank(endTimeString) && StringUtils.isBlank(startTimeString)) {
+            // 如果只传了 endTime
+            queryWrapper.le("time", endTimeString);
+        } else {
+            throw new BusinessException("时间参数错误");
+        }
+        queryWrapper.last("LIMIT " + pageSize + " OFFSET " + startIndex)
+                .orderByDesc("id");
+        List<Map<String, Object>> deviceStatusList = this.listMaps(queryWrapper);
+
+        return deviceStatusList;
+    }
+
+    public List<Map<String, Object>> typeList(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        String startTimeString = requestVO.get("startTime").toString();
+        String endTimeString = requestVO.get("endTime").toString();
+        QueryWrapper<SpRtu2017> queryWrapper1 = Wrappers.query();
+        queryWrapper1.select("COUNT(CASE WHEN clzt = 0 THEN 1 ELSE NULL END) AS untreated", "COUNT(CASE WHEN clzt = 1 THEN 1 ELSE NULL END) AS processed")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "' AND dwtype = 6");
+        if (StringUtils.isBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isNotBlank(endTimeString)) {
+            // 如果同时传了 startTime 和 endTime
+            queryWrapper1.between("time", startTimeString, endTimeString);
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+            // 如果只传了 startTime
+            queryWrapper1.between("time", startTimeString, LocalDateTime.now().toString());
+        } else if (StringUtils.isNotBlank(endTimeString) && StringUtils.isBlank(startTimeString)) {
+            // 如果只传了 endTime
+            queryWrapper1.le("time", endTimeString);
+        } else {
+            throw new BusinessException("时间参数错误");
+        }
+        List<Map<String, Object>> deviceStatusList1 = this.listMaps(queryWrapper1);
+        return deviceStatusList1;
+    }
+
+    public Integer countDevice(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+
+        QueryWrapper<SpRtu2017> queryWrapper1 = Wrappers.query();
+        queryWrapper1.select("DISTINCT device_code")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "'");
+        List<SpRtu2017> SpRtu2017 = this.list(queryWrapper1);
+
+        Integer deviceCount = SpRtu2017.size();
+
+        return deviceCount;
+    }
+
+}

+ 96 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpSj2017ServiceImpl.java

@@ -0,0 +1,96 @@
+package com.usky.issue.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.issue.domain.SpRtu2017;
+import com.usky.issue.domain.SpSj2017;
+import com.usky.issue.mapper.SpSj2017Mapper;
+import com.usky.issue.service.SpSj2017Service;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * asf 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-13
+ */
+@Service
+public class SpSj2017ServiceImpl extends AbstractCrudService<SpSj2017Mapper, SpSj2017> implements SpSj2017Service {
+    @Override
+    public List<Map<String, Object>> statusCount(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        String startTimeString = requestVO.get("startTime").toString();
+        String endTimeString = requestVO.get("endTime").toString();
+        Integer currentPage = (Integer) requestVO.get("current");
+        Integer pageSize = (Integer) requestVO.get("size");
+        int startIndex = (currentPage - 1) * pageSize;
+        QueryWrapper<SpSj2017> queryWrapper = Wrappers.query();
+        queryWrapper.select("DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') AS alarm_time","data1 AS alarm_type","data4 AS alarm_point " ,"device_code")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "' AND dwtype IN (2,5)");
+        if (StringUtils.isBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+
+        }else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isNotBlank(endTimeString)) {
+            // 如果同时传了 startTime 和 endTime
+            queryWrapper.between("time", startTimeString, endTimeString);
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+            // 如果只传了 startTime
+            queryWrapper.between("time", startTimeString, LocalDateTime.now().toString());
+        } else if (StringUtils.isNotBlank(endTimeString)  && StringUtils.isBlank(startTimeString)) {
+            // 如果只传了 endTime
+            queryWrapper.le("time", endTimeString);
+        } else {
+            throw new BusinessException("时间参数错误");
+        }
+        queryWrapper.last("LIMIT " + pageSize + " OFFSET " + startIndex)
+                    .orderByDesc("id");
+        List<Map<String, Object>> deviceStatusList = this.listMaps(queryWrapper);
+        return deviceStatusList;
+    }
+
+    public List<Map<String, Object>> typeList(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        String startTimeString = requestVO.get("startTime").toString();
+        String endTimeString = requestVO.get("endTime").toString();
+        QueryWrapper<SpSj2017> queryWrapper1 = Wrappers.query();
+        queryWrapper1.select("COUNT(CASE WHEN clzt = 0 THEN 1 ELSE NULL END) AS untreated", "COUNT(CASE WHEN clzt = 1 THEN 1 ELSE NULL END) AS processed")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "' AND dwtype IN (2,5)");
+        if (StringUtils.isBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+
+        }else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isNotBlank(endTimeString)) {
+            // 如果同时传了 startTime 和 endTime
+            queryWrapper1.between("time", startTimeString, endTimeString);
+        } else if (StringUtils.isNotBlank(startTimeString) && StringUtils.isBlank(endTimeString)) {
+            // 如果只传了 startTime
+            queryWrapper1.between("time", startTimeString, LocalDateTime.now().toString());
+        } else if (StringUtils.isNotBlank(endTimeString)  && StringUtils.isBlank(startTimeString)) {
+            // 如果只传了 endTime
+            queryWrapper1.le("time", endTimeString);
+        } else {
+            throw new BusinessException("时间参数错误");
+        }
+        List<Map<String, Object>> deviceStatusList1 = this.listMaps(queryWrapper1);
+        return deviceStatusList1;
+    }
+    public Integer countDevice(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        QueryWrapper<SpSj2017> queryWrapper1 = Wrappers.query();
+        queryWrapper1.select("DISTINCT device_code")
+                .inSql("device_code", "SELECT owner_code FROM sp_owner WHERE company = '" + companyCode + "'");
+        List<SpSj2017> SpSj2017 = this.list(queryWrapper1);
+        Integer deviceCount = SpSj2017.size();
+        return deviceCount;
+    }
+}

+ 79 - 8
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/YtDeviceStatusServiceImpl.java

@@ -1,20 +1,20 @@
 package com.usky.issue.service.impl;
 
-
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.issue.domain.YtDeviceStatus;
 import com.usky.issue.mapper.YtDeviceStatusMapper;
+import com.usky.issue.service.SpHj2017Service;
+import com.usky.issue.service.SpRtu2017Service;
+import com.usky.issue.service.SpSj2017Service;
 import com.usky.issue.service.YtDeviceStatusService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.issue.service.vo.YtDeviceStatusRequestVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -30,7 +30,16 @@ import java.util.stream.Collectors;
 public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatusMapper, YtDeviceStatus> implements YtDeviceStatusService {
     @Autowired
     private YtDeviceStatusMapper ytDeviceStatusMapper;
+    @Autowired
+    private SpRtu2017Service spRtu2017Service;
+    @Autowired
+    private SpSj2017Service spSj2017Service;
+    @Autowired
+    private SpHj2017Service spHj2017Service;
 
+    /*
+    分页查询
+    */
     @Override
     public CommonPage<YtDeviceStatus> page(YtDeviceStatusRequestVO requestVO) {
 
@@ -62,6 +71,7 @@ public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatu
         return new CommonPage<>(records, total, pageSize, pageCurrent);
     }
 
+
     /*
     导出离线数据查询结果
      */
@@ -70,6 +80,11 @@ public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatu
         return ytDeviceStatusMapper.exportData();
     }
 
+
+    /*
+    告警设备数量统计
+    */
+
     /*
     根据传入单位编号查询所有设备信息
     */
@@ -77,12 +92,68 @@ public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatu
     public List<Map<String, Object>> deviceList(String requestBody) {
         JSONObject requestVO = JSONObject.parseObject(requestBody);
         String companyCode = requestVO.get("companyCode").toString();
-        QueryWrapper<YtDeviceStatus> queryWrapper = Wrappers.query();
-        queryWrapper.select("device_type AS deviceType","COUNT(*) AS deviceTypeCounts","COUNT(difference < 48 OR " +
-                        "NULL) AS onlineCount","COUNT(difference >= 48 OR NULL) AS offlineCount")
-                .eq("company_code",companyCode)
-                .groupBy("device_type");
+        QueryWrapper<YtDeviceStatus> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("device_type AS deviceType","COUNT(*) AS deviceTypeCounts",
+                    "COUNT(difference < 48 OR NULL) AS onlineCount",
+                    "COUNT(difference >= 48 OR NULL) AS offlineCount")
+                    .eq("company_code",companyCode)
+                    .groupBy("device_type");
         List<Map<String, Object>> deviceStatusList = this.listMaps(queryWrapper);
+        if (deviceStatusList.size() == 0) {
+            throw new BusinessException("暂无设备");
+        }
+        for (Map<String, Object> type : deviceStatusList) {
+            String dwtype = String.valueOf(type.get("deviceType"));
+            type.put("deviceType", dwtype);
+            switch (dwtype) {
+                case "火系统":
+                    // 1火系统
+                    Long countHj = (spHj2017Service.countDevice(requestBody)!= null)? spHj2017Service.countDevice(requestBody) : 0L;
+                    type.put("alarmDeviceSum", countHj);
+                    break;
+                case "水系统":
+                    // 2水系统
+                    Long countSj = (spSj2017Service.countDevice(requestBody) != null) ? spSj2017Service.countDevice(requestBody) : 0L;
+                    type.put("alarmDeviceSum", countSj);
+                case "液位":
+                    // 5液位
+                    Long countSjYw = (spSj2017Service.countDevice(requestBody) != null) ? spSj2017Service.countDevice(requestBody) : 0L;
+                    type.put("alarmDeviceSum", countSjYw);
+                    break;
+                case "烟感系统":
+                    // 3烟感系统
+                    break;
+                case "消防栓":
+                    // 4消防栓
+                    break;
+                case "rtu":
+                    // 6rtu
+                    Long countRtu = (spRtu2017Service.countDevice(requestBody) != null) ? spRtu2017Service.countDevice(requestBody) : 0L;
+                    type.put("alarmDeviceSum", countRtu);
+                    break;
+                case "电气火灾":
+                    // 7电气火灾
+                    break;
+                case "防火门":
+                    // 8防火门
+                    break;
+                case "气体灭火":
+                    // 9气体灭火
+                    break;
+                case "人脸识别":
+                    // 10人脸识别
+                    break;
+                case "视频监控":
+                    // 11视频监控
+                    break;
+                case "井盖":
+                    // 128井盖
+                    break;
+                default:
+                    // 处理未知类型
+                    break;
+            }
+        }
         return deviceStatusList;
     }
 

+ 42 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpHj2017RequestVO.java

@@ -0,0 +1,42 @@
+package com.usky.issue.service.vo;
+
+import lombok.Data;
+
+import java.text.SimpleDateFormat;
+
+/**
+ * @description:TODO
+ * @author: fu
+ * @create: 2023/11/23 15:58
+ */
+@Data
+public class SpHj2017RequestVO {
+
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 页数
+     */
+    private Integer current;
+
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 开始时间
+     */
+    private SimpleDateFormat startTime = new SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");
+
+    /**
+     * 结束时间
+     */
+    private SimpleDateFormat endTime = new SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");
+
+
+}
+

+ 42 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpRtu2017RequestVO.java

@@ -0,0 +1,42 @@
+package com.usky.issue.service.vo;
+
+import lombok.Data;
+
+import java.text.SimpleDateFormat;
+
+/**
+ * @description:TODO
+ * @author: fu
+ * @create: 2023/11/23 15:58
+ */
+@Data
+public class SpRtu2017RequestVO {
+
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 页数
+     */
+    private Integer current;
+
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 开始时间
+     */
+    private SimpleDateFormat startTime = new SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");
+
+    /**
+     * 结束时间
+     */
+    private SimpleDateFormat endTime = new SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");
+
+
+}
+

+ 43 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpSj2017RequestVO.java

@@ -0,0 +1,43 @@
+package com.usky.issue.service.vo;
+
+import lombok.Data;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+
+/**
+ * @description:TODO
+ * @author: fu
+ * @create: 2023/11/23 15:58
+ */
+@Data
+public class SpSj2017RequestVO {
+
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 页数
+     */
+    private Integer current;
+
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endTime;
+
+
+}
+

+ 33 - 0
service-issue/service-issue-biz/src/main/resources/mapper/issue/SpHj2017Mapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.issue.mapper.SpHj2017Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.issue.domain.SpHj2017">
+        <id column="id" property="id" />
+        <result column="port" property="port" />
+        <result column="device_code" property="deviceCode" />
+        <result column="time" property="time" />
+        <result column="status" property="status" />
+        <result column="address" property="address" />
+        <result column="compartment" property="compartment" />
+        <result column="fireprocess" property="fireprocess" />
+        <result column="flowendtime" property="flowendtime" />
+        <result column="ncmd" property="ncmd" />
+        <result column="data1" property="data1" />
+        <result column="data2" property="data2" />
+        <result column="data3" property="data3" />
+        <result column="data4" property="data4" />
+        <result column="data5" property="data5" />
+        <result column="cllx" property="cllx" />
+        <result column="clsj" property="clsj" />
+        <result column="clr" property="clr" />
+        <result column="clnr" property="clnr" />
+        <result column="clwb" property="clwb" />
+        <result column="cllxr" property="cllxr" />
+        <result column="cldh" property="cldh" />
+        <result column="clzt" property="clzt" />
+        <result column="video" property="video" />
+    </resultMap>
+
+</mapper>

+ 30 - 0
service-issue/service-issue-biz/src/main/resources/mapper/issue/SpRtu2017Mapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.issue.mapper.SpRtu2017Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.issue.domain.SpRtu2017">
+        <id column="id" property="id" />
+        <result column="port" property="port" />
+        <result column="device_code" property="deviceCode" />
+        <result column="time" property="time" />
+        <result column="status" property="status" />
+        <result column="address" property="address" />
+        <result column="ncmd" property="ncmd" />
+        <result column="data1" property="data1" />
+        <result column="data2" property="data2" />
+        <result column="data3" property="data3" />
+        <result column="data4" property="data4" />
+        <result column="data5" property="data5" />
+        <result column="clsj" property="clsj" />
+        <result column="clr" property="clr" />
+        <result column="clnr" property="clnr" />
+        <result column="clwb" property="clwb" />
+        <result column="cllxr" property="cllxr" />
+        <result column="cldh" property="cldh" />
+        <result column="clzt" property="clzt" />
+        <result column="cllx" property="cllx" />
+        <result column="video" property="video" />
+    </resultMap>
+
+</mapper>

+ 30 - 0
service-issue/service-issue-biz/src/main/resources/mapper/issue/SpSj2017Mapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.issue.mapper.SpSj2017Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.issue.domain.SpSj2017">
+        <id column="id" property="id" />
+        <result column="port" property="port" />
+        <result column="device_code" property="deviceCode" />
+        <result column="time" property="time" />
+        <result column="status" property="status" />
+        <result column="address" property="address" />
+        <result column="ncmd" property="ncmd" />
+        <result column="data1" property="data1" />
+        <result column="data2" property="data2" />
+        <result column="data3" property="data3" />
+        <result column="data4" property="data4" />
+        <result column="data5" property="data5" />
+        <result column="cllxr" property="cllxr" />
+        <result column="clsj" property="clsj" />
+        <result column="clr" property="clr" />
+        <result column="clnr" property="clnr" />
+        <result column="clwb" property="clwb" />
+        <result column="cldh" property="cldh" />
+        <result column="clzt" property="clzt" />
+        <result column="cllx" property="cllx" />
+        <result column="video" property="video" />
+    </resultMap>
+
+</mapper>

+ 17 - 7
service-park/service-park-biz/src/main/java/com/usky/park/controller/web/DataStHistoryController.java

@@ -1,14 +1,13 @@
 package com.usky.park.controller.web;
 
 
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
 import com.usky.park.domain.DataStHistory;
-import com.usky.park.mapper.DataStHistoryMapper;
 import com.usky.park.service.DataStHistoryService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * <p>
  * 无人驿站历史数据 前端控制器
@@ -24,14 +23,12 @@ public class DataStHistoryController {
     @Autowired
     private DataStHistoryService dataStHistoryService;
 
-    @Autowired
-    private DataStHistoryMapper dataStHistoryMapper;
-
 
     /**
      * 新增
      *
      * @param dataStHistory
+     * @param appKey
      * @return
      */
     @PostMapping("/add")
@@ -39,6 +36,19 @@ public class DataStHistoryController {
                     @RequestHeader("appKey") String appKey) {
         dataStHistoryService.add(dataStHistory, appKey);
     }
-
+    /**
+     * 分页查询
+     * @param pickupStatus
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/pageQuery")
+    public ApiResult<CommonPage<DataStHistory>> pageQuery(
+            @RequestParam(value = "pickupStatus", required = false, defaultValue = "-1") Integer pickupStatus,//设置默认值为-1,则查询所有包裹(未取件优先展示)
+            @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(dataStHistoryService.pageList(pickupStatus, pageNum, pageSize));
+    }
 }
 

+ 5 - 0
service-park/service-park-biz/src/main/java/com/usky/park/domain/DataStHistory.java

@@ -78,5 +78,10 @@ public class DataStHistory implements Serializable {
      */
     private Integer packStatus;
 
+    /**
+     * 取件状态;0:已取件,1:未取件
+     */
+    private Integer pickupStatus;
+
 
 }

+ 14 - 0
service-park/service-park-biz/src/main/java/com/usky/park/service/DataStHistoryService.java

@@ -1,7 +1,9 @@
 package com.usky.park.service;
 
+import com.usky.common.core.bean.CommonPage;
 import com.usky.park.domain.DataStHistory;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.park.domain.EventEg;
 
 /**
  * <p>
@@ -12,5 +14,17 @@ import com.usky.common.mybatis.core.CrudService;
  * @since 2023-11-29
  */
 public interface DataStHistoryService extends CrudService<DataStHistory> {
+    /**
+     * 新增包裹信息
+     *
+     * @param dataStHistory
+     * @return
+     */
     void add(DataStHistory dataStHistory,String appKey);
+    /**
+     * 分页查询包裹信息
+     *
+     * @return
+     */
+    CommonPage<DataStHistory> pageList(Integer pickupStatus, Integer pageNum, Integer pageSize);
 }

+ 39 - 0
service-park/service-park-biz/src/main/java/com/usky/park/service/impl/DataStHistoryServiceImpl.java

@@ -1,9 +1,18 @@
 package com.usky.park.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.park.domain.DataStHistory;
+import com.usky.park.domain.EventEg;
+import com.usky.common.security.utils.SecurityUtils;
 import com.usky.park.mapper.DataStHistoryMapper;
 import com.usky.park.service.DataStHistoryService;
 import com.usky.common.mybatis.core.AbstractCrudService;
@@ -12,6 +21,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 
+
 /**
  * <p>
  * 无人驿站历史数据 服务实现类
@@ -25,6 +35,11 @@ public class DataStHistoryServiceImpl extends AbstractCrudService<DataStHistoryM
     @Autowired
     private DataStHistoryMapper dataStHistoryMapper;
 
+    /**
+     * 包裹信息录入
+     * @param dataStHistory
+     * @param appKey
+     */
     @Override
     public void add(DataStHistory dataStHistory, String appKey) {
 
@@ -45,4 +60,28 @@ public class DataStHistoryServiceImpl extends AbstractCrudService<DataStHistoryM
 
         baseMapper.insert(dataStHistory);
     }
+
+    /**
+     * 分页查询包裹信息
+     *
+     * @param pickupStatus  包裹状态
+     * @param pageNum   第几页
+     * @param pageSize  页大小
+     */
+    @Override
+    public CommonPage<DataStHistory> pageList(Integer pickupStatus, Integer pageNum, Integer pageSize){
+        IPage<DataStHistory> page = new Page<>(pageNum,pageSize);
+        LambdaQueryWrapper<DataStHistory> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DataStHistory::getReceiverPhone,SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+        if (pickupStatus != null) {
+            if (pickupStatus == 0) {
+                queryWrapper.eq(DataStHistory::getPickupStatus, 0);//代取件
+            } else if (pickupStatus == 1) {
+                queryWrapper.eq(DataStHistory::getPickupStatus, 1);//已取件
+            }
+        }
+        queryWrapper.orderByAsc(DataStHistory::getPickupStatus);//pickupStatus为空就查询所有包裹信息
+        page = this.page(page,queryWrapper);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),pageNum,pageSize);
+    }
 }