From 29f4a8b88752ecbfa85125cd10644c5537a17892 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Thu, 18 Aug 2022 15:23:17 +0800
Subject: [PATCH] 风场模型统计相关代码
---
screen-job/src/main/java/com/moral/api/entity/WindModel.java | 37 ++++
screen-job/src/main/java/com/moral/api/service/WindModelConfigService.java | 16 +
screen-job/src/main/java/com/moral/api/service/BenchmarkWindConfigService.java | 16 +
screen-job/src/main/java/com/moral/api/mapper/WindModelConfigMapper.java | 16 +
screen-job/src/main/java/com/moral/api/service/impl/WindModelConfigServiceImpl.java | 20 ++
screen-job/src/main/java/com/moral/api/service/impl/WindModelServiceImpl.java | 109 ++++++++++++
screen-job/src/main/resources/mapper/WindModelConfigMapper.xml | 12 +
screen-job/src/main/java/com/moral/api/entity/BenchmarkWindConfig.java | 82 +++++++++
screen-job/src/main/java/com/moral/api/task/WindModelTask.java | 40 ++++
screen-job/src/main/resources/mapper/WindModelMapper.xml | 17 +
screen-job/src/main/java/com/moral/api/entity/WindModelConfig.java | 37 ++++
screen-job/src/main/resources/mapper/BenchmarkWindConfigMapper.xml | 19 ++
screen-job/src/main/java/com/moral/api/service/impl/BenchmarkWindConfigServiceImpl.java | 20 ++
screen-job/src/main/java/com/moral/api/mapper/WindModelMapper.java | 20 ++
screen-job/src/main/java/com/moral/api/mapper/BenchmarkWindConfigMapper.java | 16 +
screen-job/src/main/java/com/moral/api/service/WindModelService.java | 20 ++
16 files changed, 497 insertions(+), 0 deletions(-)
diff --git a/screen-job/src/main/java/com/moral/api/entity/BenchmarkWindConfig.java b/screen-job/src/main/java/com/moral/api/entity/BenchmarkWindConfig.java
new file mode 100644
index 0000000..df09a08
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/BenchmarkWindConfig.java
@@ -0,0 +1,82 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BenchmarkWindConfig extends Model<BenchmarkWindConfig> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * ������
+ */
+ private String name;
+
+ /**
+ * ������
+ */
+ private String benchmark;
+
+ /**
+ * ������������������������
+ */
+ private String preservation;
+
+ /**
+ * ���������������������
+ */
+ private String destinationTab;
+
+ /**
+ * ������id
+ */
+ private Integer organizationId;
+
+ /**
+ * ������������
+ */
+ private String regionCode;
+
+ /**
+ * ������������
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * ������������
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * ������������
+ */
+ private String isDelete;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/WindModel.java b/screen-job/src/main/java/com/moral/api/entity/WindModel.java
new file mode 100644
index 0000000..a243f5f
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/WindModel.java
@@ -0,0 +1,37 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class WindModel extends Model<WindModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String json;
+
+ private String value;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/WindModelConfig.java b/screen-job/src/main/java/com/moral/api/entity/WindModelConfig.java
new file mode 100644
index 0000000..40c8482
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/WindModelConfig.java
@@ -0,0 +1,37 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class WindModelConfig extends Model<WindModelConfig> {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private Integer organizationId;
+
+ private String isDelete;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/BenchmarkWindConfigMapper.java b/screen-job/src/main/java/com/moral/api/mapper/BenchmarkWindConfigMapper.java
new file mode 100644
index 0000000..5336d26
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/BenchmarkWindConfigMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.BenchmarkWindConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+public interface BenchmarkWindConfigMapper extends BaseMapper<BenchmarkWindConfig> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/WindModelConfigMapper.java b/screen-job/src/main/java/com/moral/api/mapper/WindModelConfigMapper.java
new file mode 100644
index 0000000..feb9745
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/WindModelConfigMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.WindModelConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-18
+ */
+public interface WindModelConfigMapper extends BaseMapper<WindModelConfig> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/WindModelMapper.java b/screen-job/src/main/java/com/moral/api/mapper/WindModelMapper.java
new file mode 100644
index 0000000..8b6b06f
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/WindModelMapper.java
@@ -0,0 +1,20 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.WindModel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+public interface WindModelMapper extends BaseMapper<WindModel> {
+
+ void insert(Map map);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/BenchmarkWindConfigService.java b/screen-job/src/main/java/com/moral/api/service/BenchmarkWindConfigService.java
new file mode 100644
index 0000000..8d82e78
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/BenchmarkWindConfigService.java
@@ -0,0 +1,16 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.BenchmarkWindConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+public interface BenchmarkWindConfigService extends IService<BenchmarkWindConfig> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/WindModelConfigService.java b/screen-job/src/main/java/com/moral/api/service/WindModelConfigService.java
new file mode 100644
index 0000000..f9119e2
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/WindModelConfigService.java
@@ -0,0 +1,16 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.WindModelConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-18
+ */
+public interface WindModelConfigService extends IService<WindModelConfig> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/WindModelService.java b/screen-job/src/main/java/com/moral/api/service/WindModelService.java
new file mode 100644
index 0000000..230b409
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/WindModelService.java
@@ -0,0 +1,20 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.WindModel;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+public interface WindModelService extends IService<WindModel> {
+
+ void windFieldStatistics();
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/BenchmarkWindConfigServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/BenchmarkWindConfigServiceImpl.java
new file mode 100644
index 0000000..94ad2da
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/BenchmarkWindConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.BenchmarkWindConfig;
+import com.moral.api.mapper.BenchmarkWindConfigMapper;
+import com.moral.api.service.BenchmarkWindConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+@Service
+public class BenchmarkWindConfigServiceImpl extends ServiceImpl<BenchmarkWindConfigMapper, BenchmarkWindConfig> implements BenchmarkWindConfigService {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/WindModelConfigServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/WindModelConfigServiceImpl.java
new file mode 100644
index 0000000..d64c146
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/WindModelConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.WindModelConfig;
+import com.moral.api.mapper.WindModelConfigMapper;
+import com.moral.api.service.WindModelConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-18
+ */
+@Service
+public class WindModelConfigServiceImpl extends ServiceImpl<WindModelConfigMapper, WindModelConfig> implements WindModelConfigService {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/WindModelServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/WindModelServiceImpl.java
new file mode 100644
index 0000000..0c8e08c
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/WindModelServiceImpl.java
@@ -0,0 +1,109 @@
+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;
+
+/**
+ * <p>
+ * ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2022-08-10
+ */
+@Service
+public class WindModelServiceImpl extends ServiceImpl<WindModelMapper, WindModel> 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<WindModelConfig> windModelConfigQueryWrapper = new QueryWrapper<>();
+ windModelConfigQueryWrapper.eq("is_delete",Constants.NOT_DELETE);
+ List<WindModelConfig> windModelConfigs = windModelConfigMapper.selectList(windModelConfigQueryWrapper);
+ List<Integer> orgIdList = windModelConfigs.stream().map(WindModelConfig::getOrganizationId).collect(Collectors.toList());
+ QueryWrapper<BenchmarkWindConfig> benchmarkWindConfigQueryWrapper = new QueryWrapper<>();
+ benchmarkWindConfigQueryWrapper.eq("is_delete",Constants.NOT_DELETE);
+ benchmarkWindConfigQueryWrapper.in("organization_id",orgIdList);
+ List<Map<String, Object>> benchmarkWindConfigMaps = benchmarkWindConfigMapper.selectMaps(benchmarkWindConfigQueryWrapper);
+ for (Map<String, Object> 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<Device> 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<String,Object> 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);
+ }
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/task/WindModelTask.java b/screen-job/src/main/java/com/moral/api/task/WindModelTask.java
new file mode 100644
index 0000000..3be4c83
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/task/WindModelTask.java
@@ -0,0 +1,40 @@
+package com.moral.api.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.moral.api.entity.*;
+import com.moral.api.service.*;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @program: screen
+ * @description: ������������������������������
+ * @author: lizijie
+ * @create: 2021-10-12 08:53
+ **/
+@Component
+public class WindModelTask {
+
+ @Autowired
+ private WindModelService windModelService;
+
+ @XxlJob("windModelInsert")
+ public ReturnT windModelInsert(){
+ try {
+ windModelService.windFieldStatistics();
+ } catch (Exception e) {
+ XxlJobHelper.log(e.getMessage());
+ return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
+ }
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/screen-job/src/main/resources/mapper/BenchmarkWindConfigMapper.xml b/screen-job/src/main/resources/mapper/BenchmarkWindConfigMapper.xml
new file mode 100644
index 0000000..5016bd5
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/BenchmarkWindConfigMapper.xml
@@ -0,0 +1,19 @@
+<?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.moral.api.mapper.BenchmarkWindConfigMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.BenchmarkWindConfig">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="benchmark" property="benchmark" />
+ <result column="preservation" property="preservation" />
+ <result column="destination_tab" property="destinationTab" />
+ <result column="organization_id" property="organizationId" />
+ <result column="region_code" property="regionCode" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="is_delete" property="isDelete" />
+ </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/WindModelConfigMapper.xml b/screen-job/src/main/resources/mapper/WindModelConfigMapper.xml
new file mode 100644
index 0000000..196403b
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/WindModelConfigMapper.xml
@@ -0,0 +1,12 @@
+<?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.moral.api.mapper.WindModelConfigMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.WindModelConfig">
+ <id column="id" property="id" />
+ <result column="organization_id" property="organizationId" />
+ <result column="is_delete" property="isDelete" />
+ </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/WindModelMapper.xml b/screen-job/src/main/resources/mapper/WindModelMapper.xml
new file mode 100644
index 0000000..51bec5d
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/WindModelMapper.xml
@@ -0,0 +1,17 @@
+<?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.moral.api.mapper.WindModelMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.WindModel">
+ <id column="id" property="id" />
+ <result column="json" property="json" />
+ <result column="value" property="value" />
+ </resultMap>
+
+ <insert id="insert" parameterType="java.util.Map">
+ insert into wind_model_${destinationTab}(json,value)
+ values (#{json},#{value})
+ </insert>
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.8.0