Browse Source

接收ai报警接口以及设备运行查询接口

sl 3 months ago
parent
commit
4c0ca99a78

+ 21 - 6
module_tpm/src/main/java/org/jeecg/modules/equipmentOnoff/controller/EquipmentOnoffController.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.equipmentOnoff.controller;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -11,8 +12,10 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.equipmentOnoff.entity.EquipmentOnoff;
+import org.jeecg.modules.equipmentOnoff.entity.HistoryParamDto;
 import org.jeecg.modules.equipmentOnoff.service.IEquipmentOnoffService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -49,7 +52,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 public class EquipmentOnoffController extends JeecgController<EquipmentOnoff, IEquipmentOnoffService> {
 	@Autowired
 	private IEquipmentOnoffService equipmentOnoffService;
-	
+
 	/**
 	 * 分页列表查询
 	 *
@@ -71,7 +74,7 @@ public class EquipmentOnoffController extends JeecgController<EquipmentOnoff, IE
 		IPage<EquipmentOnoff> pageList = equipmentOnoffService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
-	
+
 	/**
 	 *   添加
 	 *
@@ -86,7 +89,7 @@ public class EquipmentOnoffController extends JeecgController<EquipmentOnoff, IE
 		equipmentOnoffService.save(equipmentOnoff);
 		return Result.OK("添加成功!");
 	}
-	
+
 	/**
 	 *  编辑
 	 *
@@ -101,7 +104,7 @@ public class EquipmentOnoffController extends JeecgController<EquipmentOnoff, IE
 		equipmentOnoffService.updateById(equipmentOnoff);
 		return Result.OK("编辑成功!");
 	}
-	
+
 	/**
 	 *   通过id删除
 	 *
@@ -116,7 +119,7 @@ public class EquipmentOnoffController extends JeecgController<EquipmentOnoff, IE
 		equipmentOnoffService.removeById(id);
 		return Result.OK("删除成功!");
 	}
-	
+
 	/**
 	 *  批量删除
 	 *
@@ -131,7 +134,7 @@ public class EquipmentOnoffController extends JeecgController<EquipmentOnoff, IE
 		this.equipmentOnoffService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
-	
+
 	/**
 	 * 通过id查询
 	 *
@@ -174,4 +177,16 @@ public class EquipmentOnoffController extends JeecgController<EquipmentOnoff, IE
         return super.importExcel(request, response, EquipmentOnoff.class);
     }
 
+	 /**
+	  * 设备健康-设备运行查询  从mongodb查询设备的历史数据  根据设备和时间查询
+	  *
+	  * @return
+	  */
+	 //@AutoLog(value = "设备健康-设备运行查询")
+	 @ApiOperation(value="设备健康-设备运行查询", notes="设备健康-设备运行查询")
+	 @GetMapping(value = "/getEquipmentHistoryData")
+	 public Result<List<Map<String, Object>>> getEquipmentHistoryData(HistoryParamDto historyParamDto) {
+		 return equipmentOnoffService.getEquipmentHistoryData(historyParamDto);
+	 }
+
 }

+ 24 - 0
module_tpm/src/main/java/org/jeecg/modules/equipmentOnoff/entity/HistoryParamDto.java

@@ -0,0 +1,24 @@
+package org.jeecg.modules.equipmentOnoff.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * ClassName: HistoryParamDto
+ * Package: org.jeecg.modules.equipmentOnoff.entity
+ * Description:
+ *
+ * @Author sl
+ * @Create 2025/2/14 15:06
+ * @Version 1.0
+ */
+@Data
+public class HistoryParamDto {
+    //设备id
+    private String equipmentid;
+    //查询开始时间
+    private Date beginTime;
+    //查询结束时间
+    private Date endTime;
+}

+ 7 - 0
module_tpm/src/main/java/org/jeecg/modules/equipmentOnoff/service/IEquipmentOnoffService.java

@@ -1,7 +1,12 @@
 package org.jeecg.modules.equipmentOnoff.service;
 
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.equipmentOnoff.entity.EquipmentOnoff;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.equipmentOnoff.entity.HistoryParamDto;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: tpm_equipment_onoff
@@ -11,4 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IEquipmentOnoffService extends IService<EquipmentOnoff> {
 
+    Result<List<Map<String, Object>>> getEquipmentHistoryData(HistoryParamDto historyParamDto);
+
 }

+ 86 - 0
module_tpm/src/main/java/org/jeecg/modules/equipmentOnoff/service/impl/EquipmentOnoffServiceImpl.java

@@ -1,12 +1,24 @@
 package org.jeecg.modules.equipmentOnoff.service.impl;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.collectdata.entity.Collectdata;
 import org.jeecg.modules.equipmentOnoff.entity.EquipmentOnoff;
+import org.jeecg.modules.equipmentOnoff.entity.HistoryParamDto;
 import org.jeecg.modules.equipmentOnoff.mapper.EquipmentOnoffMapper;
 import org.jeecg.modules.equipmentOnoff.service.IEquipmentOnoffService;
+import org.jeecg.modules.tpmEquipment.service.ITpmEquipmentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.text.SimpleDateFormat;
+import java.util.*;
+
 /**
  * @Description: tpm_equipment_onoff
  * @Author: jeecg-boot
@@ -16,4 +28,78 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 public class EquipmentOnoffServiceImpl extends ServiceImpl<EquipmentOnoffMapper, EquipmentOnoff> implements IEquipmentOnoffService {
 
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    @SuppressWarnings("all")
+    private ITpmEquipmentService tpmEquipmentService;
+
+    public Map<String, Date> splitByMonth(Date beginTime, Date endTime){
+        Map<String, Date> dateMap = new HashMap<>();
+        Calendar calB = Calendar.getInstance();
+        Calendar calE = Calendar.getInstance();
+        calB.setTime(beginTime);
+        calB.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        calE.setTime(endTime);
+        calE.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calB.getTime()));
+        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calE.getTime()));
+        int i = 1;
+        while (calB.before(calE)){
+            if(calB.get(Calendar.YEAR)==calE.get(Calendar.YEAR) && calB.get(Calendar.MONTH)==calE.get(Calendar.MONTH)){
+                dateMap.put("beginTime"+ i, calB.getTime());
+                dateMap.put("endTime"+ i, calE.getTime());
+//                dateList.add(dateMap);
+                break;
+            }
+            //当前的时间段是跨月或跨年的,需要进行切分
+            dateMap.put("beginTime"+i, calB.getTime());
+            //将开始时间挪到下个月的第一天
+            calB.add(Calendar.MONTH, 1);
+            calB.set(Calendar.DAY_OF_MONTH, 1);
+            calB.set(Calendar.HOUR_OF_DAY, 0);// 时
+            calB.set(Calendar.MINUTE, 0);// 分
+            calB.set(Calendar.SECOND, 0);// 秒
+            calB.set(Calendar.MILLISECOND, 0);// 毫秒
+            dateMap.put("endTime"+i, calB.getTime());
+            i++;
+        }
+
+        return dateMap;
+    }
+
+    public Result<List<Map<String, Object>>> getEquipmentHistoryData(HistoryParamDto historyParamDto){
+        List<Map<String, Object>> historyList = new ArrayList<>();
+        List<Collectdata> orgDataList = new ArrayList<>();
+        //根据设备id找到设备编号
+        String equipmentcode;
+        try {
+            equipmentcode = (tpmEquipmentService.getById(historyParamDto.getEquipmentid())).getEquipmentcode();
+        }catch (NullPointerException e){
+            return Result.error("id为" + historyParamDto.getEquipmentid() + "的设备找不到设备编号,无法进行数据查询!");
+        }
+
+        //根据开始时间和结束时间确定要读取的表
+        Map<String, Date> dateMap = splitByMonth(historyParamDto.getBeginTime(), historyParamDto.getEndTime());
+        for(int i=1;i<=dateMap.size()/2;i++){
+            //创建查询对象
+            Query HistoryQuery = new Query();
+            //添加查询条件
+//        HistoryQuery.addCriteria(Criteria.where("equipmentcode").is(equipmentcode));
+            HistoryQuery.addCriteria(Criteria.where("logtime").gte(dateMap.get("beginTime"+i)).lte(dateMap.get("endTime"+i))); // 大于等于startDate且小于等于endDate
+            HistoryQuery.addCriteria(Criteria.where("equipmentcode").is(equipmentcode));
+            //执行查询
+            try{
+                orgDataList.addAll(mongoTemplate.find(HistoryQuery, Collectdata.class, "data_"+new SimpleDateFormat("yyyyMM").format(dateMap.get("beginTime"+i))));
+            }catch (NullPointerException e){}
+        }
+        for(Collectdata collectdata:orgDataList){
+            Map<String, Object> dataMap = new ObjectMapper().convertValue(collectdata.getProperties(), Map.class);
+            dataMap.put("logtime", collectdata.getLogtime());
+            historyList.add(dataMap);
+        }
+        return Result.ok(historyList);
+    }
+
 }

+ 27 - 6
module_tpm/src/main/java/org/jeecg/modules/tpmMessageAlarm/controller/TpmMessageAlarmController.java

@@ -29,6 +29,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -51,7 +52,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 public class TpmMessageAlarmController extends JeecgController<TpmMessageAlarm, ITpmMessageAlarmService> {
 	@Autowired
 	private ITpmMessageAlarmService tpmMessageAlarmService;
-	
+
 	/**
 	 * 分页列表查询
 	 *
@@ -75,7 +76,7 @@ public class TpmMessageAlarmController extends JeecgController<TpmMessageAlarm,
 		page.setRecords(list);
 		return Result.OK(page);
 	}
-	
+
 	/**
 	 *   添加
 	 *
@@ -90,7 +91,7 @@ public class TpmMessageAlarmController extends JeecgController<TpmMessageAlarm,
 		tpmMessageAlarmService.save(tpmMessageAlarm);
 		return Result.OK("添加成功!");
 	}
-	
+
 	/**
 	 *  编辑
 	 *
@@ -105,7 +106,7 @@ public class TpmMessageAlarmController extends JeecgController<TpmMessageAlarm,
 		tpmMessageAlarmService.updateById(tpmMessageAlarm);
 		return Result.OK("编辑成功!");
 	}
-	
+
 	/**
 	 *   通过id删除
 	 *
@@ -120,7 +121,7 @@ public class TpmMessageAlarmController extends JeecgController<TpmMessageAlarm,
 		tpmMessageAlarmService.removeById(id);
 		return Result.OK("删除成功!");
 	}
-	
+
 	/**
 	 *  批量删除
 	 *
@@ -135,7 +136,7 @@ public class TpmMessageAlarmController extends JeecgController<TpmMessageAlarm,
 		this.tpmMessageAlarmService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
-	
+
 	/**
 	 * 通过id查询
 	 *
@@ -193,4 +194,24 @@ public class TpmMessageAlarmController extends JeecgController<TpmMessageAlarm,
 		return Result.OK(map);
 	}
 
+	 /**
+	  *   author: sl
+	  *   version: 1.0
+	  *   des: 接收django传来的报警信息
+	  *   date: 2025/2/13
+	  */
+	 @ApiOperation(value="报警信息-添加django传来的报警信息", notes="报警信息-添加django传来的报警信息")
+	 @PostMapping("/receivealarm")
+	 public Result<?> receivealarm(@RequestBody List<Map<String, Object>> data) {
+		 // 处理接收到的数据
+		 System.out.println("Received data: " + data);
+		 boolean b = tpmMessageAlarmService.savealarm_fdjango(data);
+		 if(b){
+			 return Result.ok("报警信息保存成功!");
+		 }else{
+			 return Result.error("保存报警数据发生错误!");
+		 }
+
+	 }
+
 }

+ 5 - 0
module_tpm/src/main/java/org/jeecg/modules/tpmMessageAlarm/mapper/TpmMessageAlarmMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.tpmMessageAlarm.entity.TpmMessageAlarm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.jeecg.modules.tpmMessageAlarm.entity.TpmMessageAlarmStatistics;
@@ -45,4 +46,8 @@ public interface TpmMessageAlarmMapper extends BaseMapper<TpmMessageAlarm> {
 
     /** 报警类型信息 */
     List<TpmMessageAlarmStatistics> selectAlarmType(@Param("alarmStatistics") TpmMessageAlarmStatistics alarmStatistics);
+
+    /** 根据设备code获取设备id */
+    @Select("select id from tpm_equipment where equipmentcode=#{equipmentcode}")
+    String getIdByCode(@Param("equipmentcode") String equipmentcode);
 }

+ 3 - 0
module_tpm/src/main/java/org/jeecg/modules/tpmMessageAlarm/service/ITpmMessageAlarmService.java

@@ -7,6 +7,7 @@ import org.jeecg.modules.tpmMessageAlarm.entity.TpmMessageAlarmVo;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: tpm_message_alarm
@@ -31,4 +32,6 @@ public interface ITpmMessageAlarmService extends IService<TpmMessageAlarm> {
     *   date: 2024/4/25
     */
     HashMap getAlarmInfo(List<String> ids, String yearmonth);
+
+    boolean savealarm_fdjango(List<Map<String, Object>> alarmMapList);
 }

+ 25 - 4
module_tpm/src/main/java/org/jeecg/modules/tpmMessageAlarm/service/impl/TpmMessageAlarmServiceImpl.java

@@ -13,10 +13,9 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @Description: tpm_message_alarm
@@ -107,4 +106,26 @@ public class TpmMessageAlarmServiceImpl extends ServiceImpl<TpmMessageAlarmMappe
 
         return resultMap;
     }
+
+    public boolean savealarm_fdjango(List<Map<String, Object>> alarmMapList){
+        //处理传过来的数据
+        //建立一个list用来存放报警数据用于保存数据库
+        List<TpmMessageAlarm> tpmMessageAlarmList = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        for(Map<String, Object> alarmMap:alarmMapList){
+            TpmMessageAlarm tpmMessageAlarm = new TpmMessageAlarm();
+            try {
+                tpmMessageAlarm.setAlarmtime(sdf.parse(alarmMap.get("alarmtime").toString()));
+            } catch (ParseException e) {
+                log.error("解析报警日期发生错误:" + e);
+                continue;
+            }
+            //根据equipmentcode查找设备id
+            tpmMessageAlarm.setEquipmentid(alarmMapper.getIdByCode(alarmMap.get("equipmentcode").toString()));
+            tpmMessageAlarm.setAlarmtype("6");
+            tpmMessageAlarm.setStatus(0);
+            tpmMessageAlarmList.add(tpmMessageAlarm);
+        }
+        return this.saveBatch(tpmMessageAlarmList);
+    }
 }