package com.moral.api.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.BenchmarkWindConfig; import com.moral.api.entity.Device; import com.moral.api.entity.WindModel; import com.moral.api.entity.WindModelConfig; import com.moral.api.mapper.BenchmarkWindConfigMapper; import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.WindModelConfigMapper; import com.moral.api.mapper.WindModelMapper; import com.moral.api.service.WindModelService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; import com.moral.util.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author moral * @since 2022-08-10 */ @Service public class WindModelServiceImpl extends ServiceImpl implements WindModelService { @Autowired private BenchmarkWindConfigMapper benchmarkWindConfigMapper; @Autowired private RedisTemplate redisTemplate; @Autowired private WindModelMapper windModelMapper; @Autowired private DeviceMapper deviceMapper; @Autowired private WindModelConfigMapper windModelConfigMapper; @Override public void windFieldStatistics() { QueryWrapper windModelConfigQueryWrapper = new QueryWrapper<>(); windModelConfigQueryWrapper.eq("is_delete",Constants.NOT_DELETE); List windModelConfigs = windModelConfigMapper.selectList(windModelConfigQueryWrapper); List orgIdList = windModelConfigs.stream().map(WindModelConfig::getOrganizationId).collect(Collectors.toList()); QueryWrapper benchmarkWindConfigQueryWrapper = new QueryWrapper<>(); benchmarkWindConfigQueryWrapper.eq("is_delete",Constants.NOT_DELETE); benchmarkWindConfigQueryWrapper.in("organization_id",orgIdList); List> benchmarkWindConfigMaps = benchmarkWindConfigMapper.selectMaps(benchmarkWindConfigQueryWrapper); for (Map benchmarkWindConfig:benchmarkWindConfigMaps) { String benchmark = benchmarkWindConfig.get("benchmark").toString(); String preservation = benchmarkWindConfig.get("preservation").toString(); JSONObject benchmarkJson = JSONObject.parseObject(benchmark); JSONObject preservationJson = JSONObject.parseObject(preservation); Iterator benchmarkJsonIter = benchmarkJson.entrySet().iterator(); Iterator preservationJsonIter = preservationJson.entrySet().iterator(); JSONObject windModelJson = new JSONObject(); while (benchmarkJsonIter.hasNext()) { Map.Entry entry = (Map.Entry) benchmarkJsonIter.next(); if (redisTemplate.opsForHash().hasKey("data_second",entry.getValue())){ Object benchmarkObject = redisTemplate.opsForHash().get("data_second",entry.getValue()); Map benchmarkMap = JSONObject.parseObject(JSONObject.toJSONString(benchmarkObject), Map.class); windModelJson.put(entry.getKey().toString(),benchmarkMap.get("a01008")); } } JSONObject windModelValue = new JSONObject(); while (preservationJsonIter.hasNext()) { Map.Entry entry = (Map.Entry) preservationJsonIter.next(); if (redisTemplate.opsForHash().hasKey("data_second",entry.getValue())){ Object preservationObject = redisTemplate.opsForHash().get("data_second",entry.getValue()); QueryWrapper deviceQueryWrapper = new QueryWrapper<>(); deviceQueryWrapper.eq("is_delete", Constants.NOT_DELETE); deviceQueryWrapper.eq("mac",entry.getValue()); Device device = deviceMapper.selectOne(deviceQueryWrapper); Map preservationMap = JSONObject.parseObject(JSONObject.toJSONString(preservationObject), Map.class); Object[] preservationArray = new Object[4]; preservationArray[0] = device.getLongitude(); preservationArray[1] = device.getLatitude(); preservationArray[2] = preservationMap.get("a01007"); preservationArray[3] = preservationMap.get("a01008"); windModelValue.put(entry.getKey().toString(),preservationArray); } } int dayOfMonth = DateUtils.getDay(new Date()); int remainder = dayOfMonth % 15; String remainderStr = ""; if (remainder<10){ remainderStr = "0"+remainder; }else { remainderStr = remainder+""; } Map insertMap = new HashMap<>(); insertMap.put("destinationTab",benchmarkWindConfig.get("destination_tab").toString()+remainderStr); insertMap.put("json",windModelJson.toJSONString()); insertMap.put("value",windModelValue.toJSONString()); windModelMapper.insert(insertMap); } } }