|
|
@@ -0,0 +1,235 @@
|
|
|
+package com.usky.topsail.service.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
|
|
|
+import com.usky.topsail.domain.Aa;
|
|
|
+import com.usky.topsail.domain.SpOwner;
|
|
|
+import com.usky.topsail.domain.SpSj2017;
|
|
|
+import com.usky.topsail.mapper.SpSj2017Mapper;
|
|
|
+import com.usky.topsail.service.AaService;
|
|
|
+import com.usky.topsail.service.SpOwnerService;
|
|
|
+import com.usky.topsail.service.SpSj2017Service;
|
|
|
+import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
+import com.usky.topsail.service.config.mqtt.MqttOutConfig;
|
|
|
+import com.usky.topsail.service.util.HttpClientUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.time.Instant;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * asf 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author han
|
|
|
+ * @since 2024-02-02
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class SpSj2017ServiceImpl extends AbstractCrudService<SpSj2017Mapper, SpSj2017> implements SpSj2017Service {
|
|
|
+ @Autowired
|
|
|
+ private AaService aaService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SpOwnerService spOwnerService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private MqttOutConfig.MqttGateway mqttGateway;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean add(String requestBody){
|
|
|
+ JSONObject requestVO = JSONObject.parseObject(requestBody);
|
|
|
+ String serviceId = requestVO.get("serviceId").toString();
|
|
|
+ if (StringUtils.isNotBlank(serviceId) && serviceId.equals("sensor_dat_report")){
|
|
|
+ String payload = requestVO.get("payload").toString();
|
|
|
+ JSONObject payloadVO = JSONObject.parseObject(payload);
|
|
|
+ String device_code = payloadVO.get("IMEI").toString();
|
|
|
+ LambdaQueryWrapper<SpOwner> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper.select(SpOwner::getCompany,SpOwner::getOwnerName);
|
|
|
+ wrapper.eq(SpOwner::getOwnerCode, device_code);
|
|
|
+ List<SpOwner> deviceList = spOwnerService.list(wrapper);
|
|
|
+ if (deviceList.size()>0){
|
|
|
+ Integer bat_level = Integer.parseInt(payloadVO.get("bat_level").toString());
|
|
|
+ Integer CSQ = Integer.parseInt(payloadVO.get("CSQ").toString());
|
|
|
+ Integer dev_type = Integer.parseInt(payloadVO.get("dev_type").toString());
|
|
|
+ String alarm = payloadVO.get("alarm").toString();
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String samp_time = LocalDateTime.now().format(formatter);
|
|
|
+ String sensor_dat = payloadVO.get("sensor_dat").toString();
|
|
|
+ String[] strArray = sensor_dat.split("\\|");
|
|
|
+ String sensor_dat_value = strArray[1];
|
|
|
+ String[] strArray1 = sensor_dat_value.split(",");
|
|
|
+ String device_value = "";
|
|
|
+ if (strArray1.length>=2){
|
|
|
+ device_value = strArray1[1];
|
|
|
+ }else {
|
|
|
+ device_value = strArray1[0];
|
|
|
+ }
|
|
|
+ String device_status = "";
|
|
|
+ JSONObject payloadVO1 = new JSONObject();
|
|
|
+ List<Map<String, Object>> payloadVO3 = new ArrayList<>();
|
|
|
+ JSONObject payloadVO2 = new JSONObject();
|
|
|
+ payloadVO1.put("devId",device_code);
|
|
|
+ payloadVO1.put("connType","G");
|
|
|
+ payloadVO1.put("deviceName",deviceList.get(0).getOwnerName());
|
|
|
+ payloadVO2.put("deviceName",deviceList.get(0).getOwnerName());
|
|
|
+ Instant instant = Instant.now();
|
|
|
+ long seconds = instant.getEpochSecond();
|
|
|
+ payloadVO2.put("timeStamp",seconds);
|
|
|
+ payloadVO1.put("timeStamp",seconds);
|
|
|
+ payloadVO2.put("deviceModel","");
|
|
|
+ payloadVO2.put("devId",device_code);
|
|
|
+ List<Map<String, Object>> db = new ArrayList<>();
|
|
|
+ Map<String, Object> dbMap = new HashMap<>();
|
|
|
+ dbMap.put("property","电量");
|
|
|
+ dbMap.put("serial","201");
|
|
|
+ dbMap.put("value",bat_level);
|
|
|
+ db.add(dbMap);
|
|
|
+ Map<String, Object> dbMap1 = new HashMap<>();
|
|
|
+ dbMap1.put("property","信号");
|
|
|
+ dbMap1.put("serial","202");
|
|
|
+ dbMap1.put("value","3");
|
|
|
+ db.add(dbMap1);
|
|
|
+ if(dev_type.equals(1)){
|
|
|
+ payloadVO2.put("deviceType","2");
|
|
|
+ Map<String, Object> dbMap2 = new HashMap<>();
|
|
|
+ dbMap2.put("property","水压");
|
|
|
+ dbMap2.put("serial","203");
|
|
|
+ dbMap2.put("value",device_value);
|
|
|
+ db.add(dbMap2);
|
|
|
+ Map<String, Object> dbMap3 = new HashMap<>();
|
|
|
+ dbMap3.put("property","状态");
|
|
|
+ dbMap3.put("serial","204");
|
|
|
+ if (alarm.equals("0")){
|
|
|
+ device_status = "WP0";
|
|
|
+ dbMap3.put("value","0");
|
|
|
+ payloadVO1.put("type","INFO");
|
|
|
+ }else if (alarm.equals("131072")){
|
|
|
+ device_status = "WP1";
|
|
|
+ dbMap3.put("value","1");
|
|
|
+ payloadVO1.put("type","ALARM");
|
|
|
+ }else if (alarm.equals("262144")){
|
|
|
+ device_status = "WP2";
|
|
|
+ dbMap3.put("value","2");
|
|
|
+ payloadVO1.put("type","ALARM");
|
|
|
+ }
|
|
|
+ db.add(dbMap3);
|
|
|
+ }else if (dev_type.equals(2)){
|
|
|
+ payloadVO2.put("deviceType","5");
|
|
|
+ Map<String, Object> dbMap2 = new HashMap<>();
|
|
|
+ dbMap2.put("property","水位");
|
|
|
+ dbMap2.put("serial","203");
|
|
|
+ dbMap2.put("value",device_value);
|
|
|
+ db.add(dbMap2);
|
|
|
+ Map<String, Object> dbMap3 = new HashMap<>();
|
|
|
+ dbMap3.put("property","状态");
|
|
|
+ dbMap3.put("serial","204");
|
|
|
+ if (alarm.equals("0")){
|
|
|
+ device_status = "LL0";
|
|
|
+ dbMap3.put("value","0");
|
|
|
+ payloadVO1.put("type","INFO");
|
|
|
+ }else if (alarm.equals("131072")){
|
|
|
+ payloadVO1.put("type","ALARM");
|
|
|
+ dbMap3.put("value","1");
|
|
|
+ device_status = "LL1";
|
|
|
+ SpSj2017 spSj2017 = new SpSj2017();
|
|
|
+ spSj2017.setPort("TSM-10P");
|
|
|
+ spSj2017.setDeviceCode(device_code);
|
|
|
+ spSj2017.setStatus("17");
|
|
|
+ spSj2017.setAddress("127.0.0.1");
|
|
|
+ spSj2017.setNcmd("");
|
|
|
+ spSj2017.setTime(LocalDateTime.now());
|
|
|
+ spSj2017.setData1(device_status);
|
|
|
+ spSj2017.setData2(bat_level.toString());
|
|
|
+ spSj2017.setData3(CSQ.toString());
|
|
|
+ spSj2017.setData4(device_value);
|
|
|
+ spSj2017.setData5("11111111111");
|
|
|
+ spSj2017.setCllxr("");
|
|
|
+ spSj2017.setClsj(LocalDateTime.now());
|
|
|
+ spSj2017.setClr("");
|
|
|
+ spSj2017.setClnr("");
|
|
|
+ spSj2017.setClwb("");
|
|
|
+ spSj2017.setCldh("");
|
|
|
+ spSj2017.setClzt(0);
|
|
|
+ spSj2017.setCllx("");
|
|
|
+ spSj2017.setVideo("");
|
|
|
+ this.save(spSj2017);
|
|
|
+ Long insertid1 = spSj2017.getId();
|
|
|
+ HashMap map = new HashMap();
|
|
|
+ map.put("IMEI", device_code);
|
|
|
+ map.put("insert_id", String.valueOf(insertid1));
|
|
|
+ map.put("phone", "17630065224");
|
|
|
+ map.put("time", samp_time);
|
|
|
+ map.put("evt", device_status);
|
|
|
+ String httpurl = "https://iot.usky.cn/jdxf/wxapp2.php/Home/Waterwarn/message_water";
|
|
|
+ String httpOrgCreateTestRtn = HttpClientUtil.doPost(httpurl, map, "utf-8");
|
|
|
+ }else if (alarm.equals("262144")){
|
|
|
+ payloadVO1.put("type","ALARM");
|
|
|
+ dbMap3.put("value","2");
|
|
|
+ device_status = "LL2";
|
|
|
+ SpSj2017 spSj2017 = new SpSj2017();
|
|
|
+ spSj2017.setPort("TSM-10P");
|
|
|
+ spSj2017.setDeviceCode(device_code);
|
|
|
+ spSj2017.setStatus("17");
|
|
|
+ spSj2017.setAddress("127.0.0.1");
|
|
|
+ spSj2017.setNcmd("");
|
|
|
+ spSj2017.setTime(LocalDateTime.now());
|
|
|
+ spSj2017.setData1(device_status);
|
|
|
+ spSj2017.setData2(bat_level.toString());
|
|
|
+ spSj2017.setData3(CSQ.toString());
|
|
|
+ spSj2017.setData4(device_value);
|
|
|
+ spSj2017.setData5("11111111111");
|
|
|
+ spSj2017.setCllxr("");
|
|
|
+ spSj2017.setClsj(LocalDateTime.now());
|
|
|
+ spSj2017.setClr("");
|
|
|
+ spSj2017.setClnr("");
|
|
|
+ spSj2017.setClwb("");
|
|
|
+ spSj2017.setCldh("");
|
|
|
+ spSj2017.setClzt(0);
|
|
|
+ spSj2017.setCllx("");
|
|
|
+ spSj2017.setVideo("");
|
|
|
+ this.save(spSj2017);
|
|
|
+ Long insertid1 = spSj2017.getId();
|
|
|
+ HashMap map = new HashMap();
|
|
|
+ map.put("IMEI", device_code);
|
|
|
+ map.put("insert_id", String.valueOf(insertid1));
|
|
|
+ map.put("phone", "17630065224");
|
|
|
+ map.put("time", samp_time);
|
|
|
+ map.put("evt", device_status);
|
|
|
+ String httpurl = "https://iot.usky.cn/jdxf/wxapp2.php/Home/Waterwarn/message_water";
|
|
|
+ String httpOrgCreateTestRtn = HttpClientUtil.doPost(httpurl, map, "utf-8");
|
|
|
+ }
|
|
|
+ db.add(dbMap3);
|
|
|
+ }
|
|
|
+ payloadVO2.put("dp",db);
|
|
|
+ payloadVO3.add(payloadVO2);
|
|
|
+ payloadVO1.put("devs",payloadVO3);
|
|
|
+ // 构建SQL语句
|
|
|
+ String sql =
|
|
|
+ "INSERT INTO " + "sp_d"+device_code + "(device_code,port,time,data1,data2," +
|
|
|
+ "data3,data4,data5) " + "VALUES ("+ "\""+device_code+ "\""+","+"\""+"TSM-10P"+"\""+","+"\""+samp_time+"\""
|
|
|
+ +","+"\""+device_status+"\""+","+"\""+bat_level+"\""+","+"\""+CSQ+"\""+","+"\""+device_value+"\""+","+"\""+"11111111111"+"\""+")";
|
|
|
+ // 调用JdbcTemplate进行数据库操作
|
|
|
+ SqlRunner.db().insert(sql);
|
|
|
+ System.out.print(payloadVO1.toJSONString());
|
|
|
+ mqttGateway.sendToMqtt("/usky/ytDP0002/"+deviceList.get(0).getCompany()+"/"+device_code+"/info",
|
|
|
+ payloadVO1.toJSONString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Aa aa = new Aa();
|
|
|
+ aa.setData(requestBody);
|
|
|
+ aa.setTime(LocalDateTime.now());
|
|
|
+ aaService.save(aa);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+}
|