3 changed files with 109 additions and 0 deletions
			
			
		@ -0,0 +1,23 @@
					 | 
				
			||||
package com.mh.user.service; | 
				
			||||
 | 
				
			||||
import com.mh.user.dto.DataResultDTO; | 
				
			||||
import com.mh.user.entity.DataResultChEntity; | 
				
			||||
 | 
				
			||||
import java.util.List; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author LJF | 
				
			||||
 * @version 1.0 | 
				
			||||
 * @project mh_esi | 
				
			||||
 * @description 处理数据异常 | 
				
			||||
 * @date 2025-01-17 09:41:48 | 
				
			||||
 */ | 
				
			||||
public interface DealDataExceptionService { | 
				
			||||
 | 
				
			||||
    // 处理15分钟异常的数据
 | 
				
			||||
    void dealFifteenInstantaneousExceptionData(List<DataResultDTO> mergedRecords); | 
				
			||||
 | 
				
			||||
    // 处理5分钟异常的数据
 | 
				
			||||
    void dealFiveInstantaneousExceptionData(List<DataResultChEntity> records); | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,81 @@
					 | 
				
			||||
package com.mh.user.service.impl; | 
				
			||||
 | 
				
			||||
import com.mh.user.dto.DataResultDTO; | 
				
			||||
import com.mh.user.entity.DataResultChEntity; | 
				
			||||
import com.mh.user.mapper.chillers.DealDataMapper; | 
				
			||||
import com.mh.user.service.DealDataExceptionService; | 
				
			||||
import lombok.extern.slf4j.Slf4j; | 
				
			||||
import org.springframework.stereotype.Service; | 
				
			||||
 | 
				
			||||
import javax.annotation.Resource; | 
				
			||||
import java.math.BigDecimal; | 
				
			||||
import java.time.LocalDateTime; | 
				
			||||
import java.time.format.DateTimeFormatter; | 
				
			||||
import java.util.List; | 
				
			||||
import java.util.stream.Collectors; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author LJF | 
				
			||||
 * @version 1.0 | 
				
			||||
 * @project mh_esi | 
				
			||||
 * @description 处理异常数据 | 
				
			||||
 * @date 2025-01-17 09:47:03 | 
				
			||||
 */ | 
				
			||||
@Slf4j | 
				
			||||
@Service | 
				
			||||
public class DealDataExceptionServiceImpl implements DealDataExceptionService { | 
				
			||||
 | 
				
			||||
    @Resource | 
				
			||||
    private DealDataMapper dealDataMapper; | 
				
			||||
 | 
				
			||||
    private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    public void dealFifteenInstantaneousExceptionData(List<DataResultDTO> mergedRecords) { | 
				
			||||
        new Thread(() -> { | 
				
			||||
            try { | 
				
			||||
                // 判断当前集合momentCooling,intTemp,outTemp存在小于0的数据少于10就要重新计算
 | 
				
			||||
                // stream流判断momentCooling的集合中数据小于等于0的数据集合
 | 
				
			||||
                List<DataResultDTO> momentCoolingList = mergedRecords.stream().filter(dataResultDTO -> { | 
				
			||||
                    BigDecimal momentCooling = new BigDecimal(dataResultDTO.getMomentCooling()); | 
				
			||||
                    return momentCooling.compareTo(BigDecimal.ZERO) <= 0; | 
				
			||||
                }).collect(Collectors.toList()); | 
				
			||||
                if (momentCoolingList.size() <= 10 && !momentCoolingList.isEmpty()) { | 
				
			||||
                    // 重新计算momentCooling的值
 | 
				
			||||
                    for (DataResultDTO dataResultDTO : momentCoolingList) { | 
				
			||||
                        // 将字符串转换为 LocalDateTime
 | 
				
			||||
                        LocalDateTime localDateTime = LocalDateTime.parse(dataResultDTO.getTime(), formatter); | 
				
			||||
                        for (int i = 0; i < 5; i++) { | 
				
			||||
                            dealDataMapper.proDataResult(localDateTime.format(formatter), dataResultDTO.getProjectId()); | 
				
			||||
                            localDateTime = localDateTime.plusMinutes(1); | 
				
			||||
                        } | 
				
			||||
                    } | 
				
			||||
                } | 
				
			||||
 | 
				
			||||
                // stream流判断intTemp,outTemp的集合中数据小于等于0的数据集合
 | 
				
			||||
                List<DataResultDTO> intTempList = mergedRecords.stream().filter(dataResultDTO -> { | 
				
			||||
                    BigDecimal intTemp = new BigDecimal(dataResultDTO.getIntTemp()); | 
				
			||||
                    return intTemp.compareTo(BigDecimal.ZERO) <= 0; | 
				
			||||
                }).collect(Collectors.toList()); | 
				
			||||
                if (intTempList.size() <= 10 && !intTempList.isEmpty()) { | 
				
			||||
                    // 重新计算intTemp,outTemp的值
 | 
				
			||||
                    for (DataResultDTO dataResultDTO : intTempList) { | 
				
			||||
                        // 将字符串转换为 LocalDateTime
 | 
				
			||||
                        LocalDateTime localDateTime = LocalDateTime.parse(dataResultDTO.getTime(), formatter); | 
				
			||||
                        for (int i = 0; i < 5; i++) { | 
				
			||||
                            dealDataMapper.proDataResult(localDateTime.format(formatter), dataResultDTO.getProjectId()); | 
				
			||||
                            localDateTime = localDateTime.plusMinutes(1); | 
				
			||||
                        } | 
				
			||||
                    } | 
				
			||||
                } | 
				
			||||
            } catch (Exception e) { | 
				
			||||
                log.error("处理十五分钟异常数据失败", e); | 
				
			||||
            } | 
				
			||||
        }).start(); | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    public void dealFiveInstantaneousExceptionData(List<DataResultChEntity> records) { | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue