Commit 0274405b authored by chenzhao's avatar chenzhao

Merge branch 'developer' of http://39.98.45.134:8090/moa/amos-boot-biz into developer

# Conflicts: # amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/entity/IdxBizFelk.java # amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/mapper2/IdxBizUxfvMapper.java # amos-boot-system-jxiop/amos-boot-module-jxiop-analyse-biz/src/main/resources/mapper/cluster/IdxBizUxfvMapper.xml
parents 43ca2635 c9a930ad
......@@ -25,6 +25,11 @@
<artifactId>amos-boot-biz-common</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
<dependency>
<groupId>com.yeejoin</groupId>
<artifactId>amos-component-influxdb</artifactId>
......
......@@ -16,8 +16,6 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
/**
*
*
* @author system_generator
* @date 2023-08-11
*/
......@@ -27,30 +25,39 @@ import java.util.List;
public class TestController extends BaseController {
@Autowired
CommonServiceImpl commonServiceImpl;
CommonServiceImpl commonServiceImpl;
/**
* 列表全部数据查询
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询-风电", notes = "列表全部数据查询")
@GetMapping(value = "/listfan")
public ResponseModel<List<IdxBizC80c>> selectForListFan() {
return ResponseHelper.buildResponse(commonServiceImpl.getAllFanstationTestPoint().subList(0,20));
}
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询-光伏", notes = "列表全部数据查询")
@GetMapping(value = "/listpv")
public ResponseModel<List<IdxBizHjev>> selectForListPV() {
return ResponseHelper.buildResponse(commonServiceImpl.getAllPVstationTestPoint().subList(0,20));
}
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET",value = "test", notes = "列表全部数据查询")
@GetMapping(value = "/test")
public void selectForListTest() {
commonServiceImpl.getGateWayId();
}
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询-风电", notes = "列表全部数据查询")
@GetMapping(value = "/listfan")
public ResponseModel<List<IdxBizC80c>> selectForListFan() {
return ResponseHelper.buildResponse(commonServiceImpl.getAllFanstationTestPoint().subList(0, 20));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询-光伏", notes = "列表全部数据查询")
@GetMapping(value = "/listpv")
public ResponseModel<List<IdxBizHjev>> selectForListPV() {
return ResponseHelper.buildResponse(commonServiceImpl.getAllPVstationTestPoint().subList(0, 20));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "test", notes = "列表全部数据查询")
@GetMapping(value = "/test")
public void selectForListTest() {
commonServiceImpl.getIdxBizUxfvList();
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "test", notes = "列表全部数据查询")
@GetMapping(value = "/getDateByTime")
public void getDateByTime(@RequestParam String startTime, @RequestParam String endTime) {
commonServiceImpl.getConditionVariablesByTime(startTime, endTime);
}
}
......@@ -45,10 +45,10 @@ public class IdxBizC80cDto {
private Double correlationCoefficient;
@TableField("ANALYSIS_POINT_ID")
private Integer analysisPointId;
private Long analysisPointId;
@TableField("PROCESS_POINT_ID")
private Integer processPointId;
private Long processPointId;
@ApiModelProperty(value = "片区")
@TableField("ARAE")
......
......@@ -45,10 +45,10 @@ public class IdxBizHjevDto {
private Double correlationCoefficient;
@TableField("ANALYSIS_POINT_ID")
private Integer analysisPointId;
private Long analysisPointId;
@TableField("PROCESS_POINT_ID")
private Integer processPointId;
private Long processPointId;
@ApiModelProperty(value = "片区")
@TableField("ARAE")
......
......@@ -4,7 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -36,7 +37,7 @@ public class IdxBiz208l {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......@@ -96,13 +97,13 @@ public class IdxBiz208l {
*
*/
@TableField("ANALYSIS_START_TIME")
private LocalDateTime analysisStartTime;
private Date analysisStartTime;
/**
*
*/
@TableField("ANALYSIS_END_TIME")
private LocalDateTime analysisEndTime;
private Date analysisEndTime;
/**
* 片区
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBiz3yud {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBiz59c8 {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizAahn {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizBtlq {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -69,13 +69,13 @@ public class IdxBizC80c {
*
*/
@TableField("ANALYSIS_POINT_ID")
private Integer analysisPointId;
private Long analysisPointId;
/**
*
*/
@TableField("PROCESS_POINT_ID")
private Integer processPointId;
private Long processPointId;
/**
* 片区
......
......@@ -40,7 +40,7 @@ public class IdxBizFelk {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......@@ -70,7 +70,7 @@ public class IdxBizFelk {
* 分析维度seq
*/
@TableField("ANALYSIS_OBJ_SEQ")
private Integer analysisObjSeq;
private Long analysisObjSeq;
/**
*
......@@ -100,13 +100,14 @@ public class IdxBizFelk {
*
*/
@TableField("ANALYSIS_START_TIME")
private LocalDateTime analysisStartTime;
private Date analysisStartTime;
/**
*
*/
@TableField("ANALYSIS_END_TIME")
private LocalDateTime analysisEndTime;
private Date analysisEndTime;
/**
* 片区
......
......@@ -68,13 +68,13 @@ public class IdxBizHjev {
*
*/
@TableField("ANALYSIS_POINT_ID")
private Integer analysisPointId;
private Long analysisPointId;
/**
*
*/
@TableField("PROCESS_POINT_ID")
private Integer processPointId;
private Long processPointId;
/**
* 片区
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizIegc {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizKsia {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizP2z9 {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizPldo {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizUhef {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizUxfv {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizYh88 {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -39,7 +38,7 @@ public class IdxBizZrdb {
*
*/
@TableField("REC_DATE")
private LocalDateTime recDate;
private Date recDate;
/**
*
......
......@@ -14,5 +14,9 @@ import java.util.List;
* @date 2023-08-14
*/
public interface IdxBizUxfvMapper extends BaseMapper<IdxBizUxfv> {
List<IdxBizUxfvDto> getInfluxDBData();
List<String> gateWayIdListFan();
}
package com.yeejoin.amos.boot.module.jxiop.biz.service.impl;
import cn.hutool.http.HttpUtil;
import cn.hutool.log.LogFactory;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.AmosJxiopAnalyseApplication;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizC80c;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizHjev;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.IdxBizUxfv;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBiz3yudMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizC80cMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizHjevMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.IdxBizUxfvMapper;
import com.yeejoin.amos.component.influxdb.InfluxdbUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
public class CommonServiceImpl {
private static final Logger logger = LoggerFactory.getLogger(CommonServiceImpl.class);
@Value("${sleep.time:10}")
Integer sleepTime;
@Value("${gkbl.url:http://36.40.66.175:30009/maas/api/901b4627-4fb0-4527-ab2d-f6ea936c9b9d}")
String gkblurl;
// idx_biz_hjev 光伏监测变量
// idx_biz_c80c 风电监测变量 (根据设备、系统、型号查分析和工况测点)
// idx_biz_3yud 光伏工况变量划分
// idx_biz_uxfv 风电 工况变量划分 (工况/分析变量划分)
// idx_biz_iegc光伏 预警记录
// idx_biz_zrdb 风电 预警记录
// idx_biz_felk 光伏 健康状态指数
// idx_biz_208l风电 健康状态指数
// idx_biz_uhef 风电 工况组合中心
// idx_biz_59c8 光伏 工况组合中心
// idx_biz_yh88风电 工况数据字典
// idx_biz_ksia光伏 工况数据字典
// idx_biz_p2z9光伏 预警规则配置表
// idx_biz_aahn风电 预警规则配置表
// idx_biz_btlq光伏 健康等级划分表
// idx_biz_pldo 风电 健康等级划分表
// idx_biz_c80c 风电监测变量 (根据设备、系统、型号查分析和工况测点)
@Autowired
private IdxBizC80cMapper idxBizC80cMapper;
// idx_biz_hjev 光伏监测变量
@Autowired
private IdxBizHjevMapper idxBizHjevMapper;
// idx_biz_3yud 光伏工况变量划分
@Autowired
private IdxBiz3yudMapper idxBiz3yudMapper;
// idx_biz_uxfv 风电 工况变量划分 (工况/分析变量划分)
@Autowired
private IdxBizUxfvMapper idxBizUxfvMapper;
@Autowired
InfluxdbUtil influxdbUtil;
public List<IdxBizC80c> getAllFanstationTestPoint(){
public List<IdxBizC80c> getAllFanstationTestPoint() {
List<IdxBizC80c> idxBizC80cList = new ArrayList<>();
idxBizC80cList = idxBizC80cMapper.selectList(new QueryWrapper<IdxBizC80c>().isNotNull("SEQUENCE_NBR"));
return idxBizC80cList;
}
public List<IdxBizHjev> getAllPVstationTestPoint(){
public List<IdxBizHjev> getAllPVstationTestPoint() {
List<IdxBizHjev> idxBizC80cList = new ArrayList<>();
idxBizC80cList = idxBizHjevMapper.selectList(new QueryWrapper<IdxBizHjev>().isNotNull("SEQUENCE_NBR"));
return idxBizC80cList;
}
public List<String> getGateWayId(){
List<String> gateWayIdList=idxBizC80cMapper.gateWayIdListFan();
public List<String> getGateWayId() {
List<String> gateWayIdList = idxBizC80cMapper.gateWayIdListFan();
return gateWayIdList;
}
}
}
/**
* @return
* @deprecated 获取工况变量列表
*/
public HashMap<String, List<IdxBizUxfv>> getIdxBizUxfvList() {
HashMap<String, List<IdxBizUxfv>> IdxBizUxfvHashMap = new HashMap<>();
List<String> gateWayIdList = idxBizUxfvMapper.gateWayIdListFan();
List<IdxBizUxfv> idxBizUxfvList = idxBizUxfvMapper.selectList(new QueryWrapper<IdxBizUxfv>().isNotNull("SEQUENCE_NBR").eq("TAG_CODE", "工况变量"));
List<IdxBizUxfv> finalIdxBizUxfvList = idxBizUxfvList;
gateWayIdList.forEach(s -> {
IdxBizUxfvHashMap.put("iot_data_" + s, finalIdxBizUxfvList.stream().filter(idxBizUxfv -> idxBizUxfv.getGatewayId().equals(s)).collect(Collectors.toList()));
});
return IdxBizUxfvHashMap;
}
//遍历工况列表数据
public void getConditionVariablesByTime(String startTime, String endTime) {
HashMap<String, List<IdxBizUxfv>> IdxBizUxfvHashMap = getIdxBizUxfvList();
IdxBizUxfvHashMap.keySet().forEach(s -> {
List<IdxBizUxfv> list = IdxBizUxfvHashMap.get(s);
foreachHandlerConditionVariab(s, list, startTime, endTime);
});
}
//遍历查询数据并调用并计算
public void foreachHandlerConditionVariab(String tableName, List<IdxBizUxfv> list, String startTime, String endTime) {
list.forEach(idxBizUxfv -> {
logger.info("--------------------------------------------开始查询--------------------------------");
List<Map<String, String>> params = new ArrayList<>();
// String sql = String.format("select value from %s where address='%s' and where time >= '%s' and where time <= '%s' ", tableName, idxBizUxfv.getIndexAddress(), startTime, endTime);
String sql = String.format("select value from %s where address='%s' ", tableName, idxBizUxfv.getIndexAddress());
List<Map<String, Object>> returnList = influxdbUtil.query(sql);
returnList.forEach((k) -> {
Map<String, String> map = new HashMap<>();
map.put("processVariable", k.get("value").toString());
map.put("processVariableId", idxBizUxfv.getSequenceNbr());
params.add(map);
});
if (!params.isEmpty()) {
logger.info("------------------------------------------开始调用工况变量算法----------------------------------------");
HttpUtil.createPost(gkblurl).body(JSON.toJSONString(params)).execute().body();
try {
TimeUnit.SECONDS.sleep(sleepTime);
logger.info("------------------------------------------调用工况变量算法结束----------------------------------------");
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
});
}
public HashMap<String, List<IdxBizUxfv>> getIdxBizUxfvListOfAnaLyse() {
HashMap<String, List<IdxBizUxfv>> IdxBizUxfvHashMap = new HashMap<>();
List<String> gateWayIdList = idxBizUxfvMapper.gateWayIdListFan();
List<IdxBizUxfv> idxBizUxfvListFengxi = idxBizUxfvMapper.selectList(new QueryWrapper<IdxBizUxfv>().isNotNull("SEQUENCE_NBR").eq("TAG_CODE", "分析变量"));
List<IdxBizUxfv> finalIdxBizUxfvList = idxBizUxfvListFengxi;
gateWayIdList.forEach(s -> {
IdxBizUxfvHashMap.put("iot_data_" + s, finalIdxBizUxfvList.stream().filter(idxBizUxfv -> idxBizUxfv.getGatewayId().equals(s)).collect(Collectors.toList()));
});
return IdxBizUxfvHashMap;
}
public void getConditionVariablesByTimeAnalyse(String startTime, String endTime) {
HashMap<String, List<IdxBizUxfv>> IdxBizUxfvHashMap = getIdxBizUxfvListOfAnaLyse();
IdxBizUxfvHashMap.keySet().forEach(s -> {
List<IdxBizUxfv> list = IdxBizUxfvHashMap.get(s);
list.forEach(idxBizUxfv -> {
List<IdxBizC80c> gongkuangList = idxBizC80cMapper.selectList(new QueryWrapper<IdxBizC80c>().eq("ANALYSIS_GATEWAY_ID", idxBizUxfv.getGatewayId()).eq("ANALYSIS_POINT_ID", idxBizUxfv.getSequenceNbr()));
foreachHandlerConditionVariabAnalyse(s, gongkuangList, startTime, endTime, idxBizUxfv);
});
});
}
public void foreachHandlerConditionVariabAnalyse(String tableName, List<IdxBizC80c> list, String startTime, String endTime, IdxBizUxfv idxBizUxfv) {
String sql1 = String.format("select value from %s where address='%s' ", tableName, idxBizUxfv.getIndexAddress());
List<Map<String, Object>> returnList = influxdbUtil.query(sql1);
List<Map<String, String>> params = new ArrayList<>();
returnList.forEach((k) -> {
Map<String, String> map = new HashMap<>();
map.put("analysisVariable", k.get("value").toString());
map.put("analysisVariableId", idxBizUxfv.getSequenceNbr());
params.add(map);
});
final List<Map<String, String>> tempParams = params;
list.forEach(idxBizC80c -> {
logger.info("--------------------------------------------开始查询--------------------------------");
List<Map<String, String>> params1 = new ArrayList<>();
List<Map<String, String>> requestParams = new ArrayList<>();
// String sql = String.format("select value from %s where address='%s' and where time >= '%s' and where time <= '%s' ", tableName, idxBizUxfv.getIndexAddress(), startTime, endTime);
String sql = String.format("select value from %s where address='%s' ", tableName, idxBizC80c.getProcessIndexAddress());
List<Map<String, Object>> returnList1 = influxdbUtil.query(sql);
returnList.forEach((k) -> {
Map<String, String> map = new HashMap<>();
map.put("processVariable", k.get("value").toString());
map.put("processVariableId", idxBizC80c.getProcessPointId().toString());
params1.add(map);
});
if (tempParams.size() >= params1.size()) {
requestParams = megreMapList(tempParams, params1);
} else {
requestParams = megreMapList(params1, tempParams);
}
if (!requestParams.isEmpty()) {
logger.info("------------------------------------------开始调用工况变量算法----------------------------------------");
HttpUtil.createPost(gkblurl).body(JSON.toJSONString(requestParams)).execute().body();
try {
TimeUnit.SECONDS.sleep(sleepTime);
logger.info("------------------------------------------调用工况变量算法结束----------------------------------------");
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
});
}
public List<Map<String, String>> megreMapList(List<Map<String, String>> longList, List<Map<String, String>> shortList) {
List<Map<String, String>> resultList = new ArrayList<>();
for (int i = 0; i < longList.size(); i++) {
Map<String, String> map = longList.get(i);
Map<String, String> mapOfShortList = null;
if (i < mapOfShortList.size() - 1) {
mapOfShortList = shortList.get(i);
} else {
mapOfShortList = shortList.get(shortList.size() - 1);
}
if (map.containsKey("processVariable")) {
map.put("processVariable", mapOfShortList.get("processVariable"));
map.put("processVariableId", mapOfShortList.get("processVariableId"));
} else {
map.put("analysisVariable", mapOfShortList.get("analysisVariable"));
map.put("analysisVariableId", mapOfShortList.get("analysisVariableId"));
}
}
return resultList;
}
public void getConditionVariablesByTimeAnalyse1(String startTime, String endTime) {
HashMap<String, List<IdxBizUxfv>> IdxBizUxfvHashMap = getIdxBizUxfvListOfAnaLyse();
IdxBizUxfvHashMap.keySet().forEach(s -> {
List<IdxBizUxfv> list = IdxBizUxfvHashMap.get(s);
list.forEach(idxBizUxfv -> {
List<IdxBizC80c> gongkuangList = idxBizC80cMapper.selectList(new QueryWrapper<IdxBizC80c>().eq("ANALYSIS_GATEWAY_ID", idxBizUxfv.getGatewayId()).eq("ANALYSIS_POINT_ID", idxBizUxfv.getSequenceNbr()).orderByDesc("CORRELATION_COEFFICIENT").last("limit 0,3"));
foreachHandlerConditionVariabAnalyse(s, gongkuangList, startTime, endTime, idxBizUxfv);
});
});
}
public void foreachHandlerConditionVariabAnalyse1(String tableName, List<IdxBizC80c> list, String startTime, String endTime, IdxBizUxfv idxBizUxfv) {
String sql0 = String.format("select value from %s where address='%s' ", tableName, idxBizUxfv.getIndexAddress());
List<Map<String, Object>> returnList = influxdbUtil.query(sql0);
List<Map<String, String>> params = new ArrayList<>();
returnList.forEach((k) -> {
Map<String, String> map = new HashMap<>();
map.put("analysisVariable", k.get("value").toString());
map.put("analysisVariableId", idxBizUxfv.getSequenceNbr());
params.add(map);
});
final List<Map<String, String>> tempParams = params;
logger.info("--------------------------------------------开始查询--------------------------------");
List<Map<String, String>> params1 = new ArrayList<>();
List<Map<String, String>> requestParams = new ArrayList<>();
// String sql = String.format("select value from %s where address='%s' and where time >= '%s' and where time <= '%s' ", tableName, idxBizUxfv.getIndexAddress(), startTime, endTime);
String sql = String.format("select value from %s where address='%s' ", tableName, list.get(0).getProcessIndexAddress());
String sql1 = String.format("select value from %s where address='%s' ", tableName, list.get(1).getProcessIndexAddress());
String sql2 = String.format("select value from %s where address='%s' ", tableName, list.get(2).getProcessIndexAddress());
List<Map<String, Object>> returnList0 = influxdbUtil.query(sql);
List<Map<String, Object>> maxList = returnList0;
List<Map<String, Object>> returnList1 = influxdbUtil.query(sql);
maxList = maxList.size() > returnList1.size() ? maxList : returnList1;
List<Map<String, Object>> returnList2 = influxdbUtil.query(sql);
maxList = maxList.size() > returnList2.size() ? maxList : returnList2;
for (int j = 0; j < maxList.size(); j++) {
Map<String, String> map = new HashMap<>();
Map<String, Object> map1 = new HashMap<>();
Map<String, Object> map2 = new HashMap<>();
Map<String, Object> map3 = new HashMap<>();
if (j < returnList0.size() - 1) {
map1 = returnList0.get(j);
} else {
map1 = returnList0.get(returnList0.size() - 1);
}
if (j < returnList1.size() - 1) {
map2 = returnList1.get(j);
} else {
map2 = returnList1.get(returnList1.size() - 1);
}
if (j < returnList2.size() - 1) {
map3 = returnList2.get(j);
} else {
map3 = returnList2.get(returnList2.size() - 1);
}
map.put("processVariable1", map1.get("value").toString());
map.put("processVariable1Id", list.get(0).getProcessPointId().toString());
map.put("processVariable2", map2.get("value").toString());
map.put("processVariable2Id", list.get(1).getProcessPointId().toString());
map.put("processVariable3", map3.get("value").toString());
map.put("processVariable3Id", list.get(2).getProcessPointId().toString());
params1.add(map);
if (tempParams.size() >= params1.size()) {
requestParams = megreMapList1(tempParams, params1);
} else {
requestParams = megreMapList1(params1, tempParams);
}
if (!requestParams.isEmpty()) {
logger.info("------------------------------------------开始调用工况变量算法----------------------------------------");
HttpUtil.createPost(gkblurl).body(JSON.toJSONString(requestParams)).execute().body();
try {
TimeUnit.SECONDS.sleep(sleepTime);
logger.info("------------------------------------------调用工况变量算法结束----------------------------------------");
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
public List<Map<String, String>> megreMapList1(List<Map<String, String>> longList, List<Map<String, String>> shortList) {
List<Map<String, String>> resultList = new ArrayList<>();
for (int i = 0; i < longList.size(); i++) {
Map<String, String> map = longList.get(i);
Map<String, String> mapOfShortList = null;
if (i < mapOfShortList.size() - 1) {
mapOfShortList = shortList.get(i);
} else {
mapOfShortList = shortList.get(shortList.size() - 1);
}
if (map.containsKey("processVariable1")) {
map.put("processVariable1", mapOfShortList.get("processVariable1"));
map.put("processVariable1Id", mapOfShortList.get("processVariable1Id"));
map.put("processVariable2", mapOfShortList.get("processVariable2"));
map.put("processVariable2Id", mapOfShortList.get("processVariable2Id"));
map.put("processVariable3", mapOfShortList.get("processVariable3"));
map.put("processVariable3Id", mapOfShortList.get("processVariable3Id"));
} else {
map.put("analysisVariable", mapOfShortList.get("analysisVariable"));
map.put("analysisVariableId", mapOfShortList.get("analysisVariableId"));
}
}
return resultList;
}
}
......@@ -50,4 +50,7 @@
GROUP BY b.SEQUENCE_NBR
</select>
<select id="gateWayIdListFan" resultType="java.lang.String">
select GATEWAY_ID from idx_biz_uxfv group by GATEWAY_ID;
</select>
</mapper>
package com.yeejoin.amos.boot.module.jxiop.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum QrcodeColorEnum {
GREEN("绿码", "green"),
RED("红码", "red"),
YELLOW("黄码", "yellow");
private String name;
private String code;
public static String getCode(String name) {
for (QrcodeColorEnum qrcodeColorEnum : QrcodeColorEnum.values()) {
if (qrcodeColorEnum.getName().equals(name)) {
return qrcodeColorEnum.getCode();
}
}
return null;
}
}
package com.yeejoin.amos.boot.module.jxiop.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum QrcodePostEnum {
ZZ("站长", "登高证,调度证,高压电工证"),
FZZ("副站长", "登高证,调度证,高压电工证"),
JXBZ("检修班长", "登高证,高压电工证"),
JXY("检修员", "登高证,高压电工证"),
YWZZ("运维值长", "登高证,调度证,高压电工证"),
YWY("运维员", "登高证,调度证,高压电工证"),
CS("厨师", "健康证"),
AQY("安全员", "安全员证"),
SJ("司机", "驾照"),
XFY("消防员", "消防设施操作证");
private String name;
private String code;
public static String getCode(String name) {
for (QrcodePostEnum qrcodePostEnum : QrcodePostEnum.values()) {
if (qrcodePostEnum.getName().equals(name)) {
return qrcodePostEnum.getCode();
}
}
return null;
}
}
package com.yeejoin.amos.boot.module.jxiop.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class CertificateDto implements Serializable {
/**
* 证书集合 【逗号隔开】
*/
private String certificates;
/**
* 距过期还有多少天 【已过期的不会出现在这里】
*/
private Integer expirationDays;
}
package com.yeejoin.amos.boot.module.jxiop.api.dto;
import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonCertificate;
import lombok.Data;
import java.util.List;
@Data
public class CertificationInfo {
private List<PersonCertificate> certificationInfo;
}
......@@ -17,7 +17,8 @@ public class PersonDto {
private PersonUser personUser;
//资质信息
private PersonCertificate personCertificate;
// private CertificationInfo personCertificate;
private CertificationInfo personCertificate;
//账户信息
private PersonAccount personAccount;
......
package com.yeejoin.amos.boot.module.jxiop.api.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class PersonYardDto implements Serializable {
/**
* 岗位
*/
private String postName;
/**
* 人员表主键ID
*/
private Long personId;
/**
* 证书信息
*/
private List<CertificateDto> certificateDtoList;
}
......@@ -150,4 +150,9 @@ public class PersonBasic extends BaseEntity {
@TableField("post_name")
private String postName;
/**
* 岗位
*/
@TableField("qrcode_color")
private String qrcodeColor;
}
......@@ -11,6 +11,8 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.text.ParseException;
import java.util.List;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.PersonBasicServiceImpl;
import org.springframework.web.context.request.RequestContextHolder;
......@@ -50,10 +52,9 @@ public class PersonBasicController extends BaseController {
@ApiOperation(httpMethod = "POST", value = "新增人员基本信息", notes = "新增人员基本信息")
public ResponseModel<Object> save(@RequestBody PersonDto model,HttpServletRequest httpServletRequest) {
try {
personBasicServiceImpl.addPerson(model,httpServletRequest);
}catch (InnerInvokException e){
personBasicServiceImpl.addPerson(model, httpServletRequest);
}catch (InnerInvokException | ParseException e){
e.printStackTrace();
return this.buildResponseFalse(e.getMessage());
}
......@@ -76,7 +77,7 @@ public class PersonBasicController extends BaseController {
public ResponseModel<PersonDto> updateBySequenceNbrPersonBasic(@RequestBody PersonDto model,@RequestParam(value = "sequenceNbr") Long sequenceNbr,HttpServletRequest httpServletRequest) {
try {
personBasicServiceImpl.updatePerson(model,httpServletRequest,sequenceNbr);
}catch (InnerInvokException e){
}catch (InnerInvokException | ParseException e){
e.printStackTrace();
return this.buildResponseFalse(e.getMessage());
}
......
......@@ -2,7 +2,13 @@ package com.yeejoin.amos.boot.module.jxiop.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.jxiop.api.Enum.QrcodeColorEnum;
import com.yeejoin.amos.boot.module.jxiop.api.Enum.QrcodePostEnum;
import com.yeejoin.amos.boot.module.jxiop.api.dto.*;
import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonBasic;
import com.yeejoin.amos.boot.module.jxiop.api.entity.*;
......@@ -17,7 +23,9 @@ import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.LoginInfoModel;
import com.yeejoin.amos.feign.privilege.util.DesUtil;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
......@@ -28,6 +36,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
......@@ -83,30 +92,69 @@ public class PersonBasicServiceImpl extends BaseService<PersonBasicDto, PersonBa
* 新增
*/
@Transactional
public void addPerson(PersonDto model, HttpServletRequest httpServletRequest) {
public void addPerson(PersonDto model
, HttpServletRequest httpServletRequest
) throws ParseException {
//获取人员基本信息数据
PersonUser personUser = model.getPersonUser();
//获取人员资质信息
PersonCertificate personCertificate = model.getPersonCertificate();
//获取人员账号信息
PersonAccount personAccount = model.getPersonAccount();
personUser.setPhone(personAccount.getPhoneNum());
//人员基础信息
PersonBasic personBasic = new PersonBasic();
BeanUtils.copyProperties(personUser, personBasic);
//默认红码
personBasic.setQrcodeColor(QrcodeColorEnum.RED.getCode());
// 该岗位应获得的证书
List<String> list2 = new ArrayList<>();
if (StringUtils.isNotEmpty(personUser.getPostName())) {
String certificates = QrcodePostEnum.getCode(personUser.getPostName());
list2 = Arrays.asList(certificates.split(","));
}
List<String> list = new ArrayList(list2);
//人员资质信息
Integer isInMonth = 0;
Integer isOver = 0;
CertificationInfo personCertificate = model.getPersonCertificate();
if (CollectionUtils.isNotEmpty(personCertificate.getCertificationInfo())) {
for (PersonCertificate item : personCertificate.getCertificationInfo()) {
Date date = DateUtils.dateAddYears(item.getCertificateTime(), Integer.parseInt(item.getValidPeriod()));
if (list.contains(item.getCertificateName()) &&
DateUtils.dateCompare(date, new Date()) == -1) {
isOver = 1;
}
if (list.contains(item.getCertificateName()) &&
DateUtils.dateBetweenIncludeToday(date, new Date()) < 30 &&
DateUtils.dateCompare(date, new Date()) == 1) {
isInMonth = 1;
}
list.remove(item.getCertificateName());
}
}
if (CollectionUtils.isEmpty(list) && isInMonth == 0 && isOver == 0) {
personBasic.setQrcodeColor(QrcodeColorEnum.GREEN.getCode());
} else if (CollectionUtils.isEmpty(list) && isOver == 1) {
personBasic.setQrcodeColor(QrcodeColorEnum.RED.getCode());
} else if (CollectionUtils.isEmpty(list) && isOver == 0 && isInMonth == 1) {
personBasic.setQrcodeColor(QrcodeColorEnum.YELLOW.getCode());
}
this.baseMapper.insert(personBasic);
personCertificate.getCertificationInfo().forEach(item -> {
item.setPersonId(personBasic.getSequenceNbr());
personCertificateService.save(item);
});
//人员技能学历信息
PersonSkillEducation personSkillEducation = new PersonSkillEducation();
BeanUtils.copyProperties(personUser, personSkillEducation);
personSkillEducation.setPersonId(personBasic.getSequenceNbr());
personSkillEducationService.save(personSkillEducation);
//人员资质信息
personCertificate.setPersonId(personBasic.getSequenceNbr());
personCertificateService.save(personCertificate);
//人员账号信息
personAccount.setPersonId(personBasic.getSequenceNbr());
personAccount.setPassword(DesUtil.encode(personAccount.getPassword(), secretKey));
......@@ -184,13 +232,11 @@ public class PersonBasicServiceImpl extends BaseService<PersonBasicDto, PersonBa
@Transactional
public PersonDto updatePerson(PersonDto model, HttpServletRequest httpServletRequest, Long sequenceNbr) {
public PersonDto updatePerson(PersonDto model, HttpServletRequest httpServletRequest, Long sequenceNbr) throws ParseException {
//获取人员基本信息数据
PersonUser personUser = model.getPersonUser();
//获取人员资质信息
PersonCertificate personCertificate = model.getPersonCertificate();
//获取人员账号信息
PersonAccount personAccount = model.getPersonAccount();
PersonAccount oldpersonAccount = new PersonAccount();
......@@ -201,7 +247,7 @@ public class PersonBasicServiceImpl extends BaseService<PersonBasicDto, PersonBa
personBasic.setSequenceNbr(sequenceNbr);
personAccount.setPassword(DesUtil.encode(personAccount.getPassword(), secretKey));
personAccount.setSecondaryPassword(DesUtil.encode(personAccount.getSecondaryPassword(), secretKey));
this.personBasicMapper.updateById(personBasic);
//人员归属信息
PersonSkillEducation personSkillEducation = new PersonSkillEducation();
BeanUtils.copyProperties(personUser, personSkillEducation);
......@@ -209,8 +255,55 @@ public class PersonBasicServiceImpl extends BaseService<PersonBasicDto, PersonBa
PersonSkillEducation personSkillEducationd = personSkillEducationService.getOne(new QueryWrapper<PersonSkillEducation>().eq("person_id", personBasic.getSequenceNbr()));
personSkillEducation.setSequenceNbr(personSkillEducationd.getSequenceNbr());
personSkillEducationService.updateById(personSkillEducation);
//获取人员资质信息
CertificationInfo personCertificate = model.getPersonCertificate();
LambdaUpdateWrapper<PersonCertificate> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(PersonCertificate::getPersonId, personBasic.getSequenceNbr());
personCertificateService.remove(wrapper);
//默认红码
personBasic.setQrcodeColor(QrcodeColorEnum.RED.getCode());
// 该岗位应获得的证书
List<String> list2 = new ArrayList<>();
if (StringUtils.isNotEmpty(personUser.getPostName())) {
String certificates = QrcodePostEnum.getCode(personUser.getPostName());
list2 = Arrays.asList(certificates.split(","));
}
List<String> list = new ArrayList(list2);
//人员资质信息
personCertificateService.updateById(personCertificate);
Integer isInMonth = 0;
Integer isOver = 0;
if (CollectionUtils.isNotEmpty(personCertificate.getCertificationInfo())) {
for (PersonCertificate item : personCertificate.getCertificationInfo()) {
Date date = DateUtils.dateAddYears(item.getCertificateTime(), Integer.parseInt(item.getValidPeriod()));
if (list.contains(item.getCertificateName()) &&
DateUtils.dateCompare(date, new Date()) == -1) {
isOver = 1;
}
if (list.contains(item.getCertificateName()) &&
DateUtils.dateBetweenIncludeToday(date, new Date()) < 30 &&
DateUtils.dateCompare(date, new Date()) == 1) {
isInMonth = 1;
}
item.setPersonId(personBasic.getSequenceNbr());
personCertificateService.save(item);
list.remove(item.getCertificateName());
}
}
if (CollectionUtils.isEmpty(list) && isInMonth == 0 && isOver == 0) {
personBasic.setQrcodeColor(QrcodeColorEnum.GREEN.getCode());
} else if (CollectionUtils.isEmpty(list) && isOver == 1) {
personBasic.setQrcodeColor(QrcodeColorEnum.RED.getCode());
} else if (CollectionUtils.isEmpty(list) && isOver == 0 && isInMonth == 1) {
personBasic.setQrcodeColor(QrcodeColorEnum.YELLOW.getCode());
}
this.personBasicMapper.updateById(personBasic);
//人员账号信息
personAccount.setPersonId(sequenceNbr);
oldpersonAccount=personAccountService.getById(personAccount.getSequenceNbr());
......@@ -293,6 +386,7 @@ public class PersonBasicServiceImpl extends BaseService<PersonBasicDto, PersonBa
QueryWrapper<PersonBasic> wrapper1 = new QueryWrapper();
wrapper1.eq("sequence_nbr", sequenceNbr);
wrapper1.eq("is_delete", 0);
//人员基础信息
PersonBasic personBasic = this.getOne(wrapper1);
BeanUtils.copyProperties(personBasic, personUser);
......@@ -302,12 +396,12 @@ public class PersonBasicServiceImpl extends BaseService<PersonBasicDto, PersonBa
PersonSkillEducation personSkillEducation = personSkillEducationService.getOne(wrapper2);
BeanUtils.copyProperties(personSkillEducation, personUser);
QueryWrapper<PersonCertificate> wrapper3 = new QueryWrapper();
wrapper3.eq("person_id", sequenceNbr);
//人员资质信息
PersonCertificate personCertificate = personCertificateService.getOne(wrapper3);
LambdaQueryWrapper<PersonCertificate> personCertificateLambdaQueryWrapper = new LambdaQueryWrapper<>();
personCertificateLambdaQueryWrapper.eq(PersonCertificate::getPersonId, sequenceNbr);
List<PersonCertificate> list = personCertificateService.list(personCertificateLambdaQueryWrapper);
CertificationInfo certificationInfo = new CertificationInfo();
certificationInfo.setCertificationInfo(list);
QueryWrapper<PersonAccount> wrapper4 = new QueryWrapper();
wrapper4.eq("person_id", sequenceNbr);
......@@ -321,7 +415,7 @@ public class PersonBasicServiceImpl extends BaseService<PersonBasicDto, PersonBa
personUser.setNativePlace(JSON.parseArray(personBasic.getNativePlace(), Integer.class));
}
personDto.setPersonUser(personUser);
personDto.setPersonCertificate(personCertificate);
personDto.setPersonCertificate(certificationInfo);
personDto.setPersonAccount(personAccount);
return personDto;
}
......
package com.yeejoin.amos.boot.module.jxiop.biz.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.jxiop.api.Enum.QrcodeColorEnum;
import com.yeejoin.amos.boot.module.jxiop.api.Enum.QrcodePostEnum;
import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonBasic;
import com.yeejoin.amos.boot.module.jxiop.api.entity.PersonCertificate;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonBasicMapper;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonCertificateMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Component
public class PersonYardTimeTask {
@Autowired
PersonBasicMapper personBasicMapper;
@Autowired
PersonBasicServiceImpl personBasicService;
//人员资质信息service
@Autowired
PersonCertificateMapper personCertificateMapper;
@Scheduled(cron = "0 0 0 1/1 * ? ")
public void timeYardTimeTask() {
List<PersonBasic> personBasicList = personBasicMapper.selectList(null);
List<PersonCertificate> personCertificates = personCertificateMapper.selectList(null);
Map<Long, List<PersonCertificate>> perCertificateMap = personCertificates.stream().filter(item -> ObjectUtils.isNotEmpty(item.getPersonId())).collect(Collectors.groupingBy(PersonCertificate::getPersonId));
List<PersonBasic> personBasics = new ArrayList<>();
personBasicList.forEach(personBasic -> {
List<PersonCertificate> personCertificateList = perCertificateMap.get(personBasic.getSequenceNbr());
//默认红码
personBasic.setQrcodeColor(QrcodeColorEnum.RED.getCode());
// 该岗位应获得的证书
List<String> list2 = new ArrayList<>();
if (StringUtils.isNotEmpty(personBasic.getPostName())) {
String certificates = QrcodePostEnum.getCode(personBasic.getPostName());
list2 = Arrays.asList(certificates.split(","));
}
List<String> list = new ArrayList(list2);
//人员资质信息
Integer isInMonth = 0;
Integer isOver = 0;
if (CollectionUtils.isNotEmpty(personCertificateList)) {
for (PersonCertificate item : personCertificateList) {
Date date = DateUtils.dateAddYears(item.getCertificateTime(), Integer.parseInt(item.getValidPeriod()));
if (list.contains(item.getCertificateName()) &&
DateUtils.dateCompare(date, new Date()) == -1) {
isOver = 1;
}
try {
if (list.contains(item.getCertificateName()) &&
DateUtils.dateBetweenIncludeToday(date, new Date()) < 30 &&
DateUtils.dateCompare(date, new Date()) == 1) {
isInMonth = 1;
}
} catch (ParseException e) {
e.printStackTrace();
}
list.remove(item.getCertificateName());
}
}
if (CollectionUtils.isEmpty(list) && isInMonth == 0 && isOver == 0) {
personBasic.setQrcodeColor(QrcodeColorEnum.GREEN.getCode());
} else if (CollectionUtils.isEmpty(list) && isOver == 1) {
personBasic.setQrcodeColor(QrcodeColorEnum.RED.getCode());
} else if (CollectionUtils.isEmpty(list) && isOver == 0 && isInMonth == 1) {
personBasic.setQrcodeColor(QrcodeColorEnum.YELLOW.getCode());
}
personBasics.add(personBasic);
});
personBasicService.updateBatchById(personBasics);
}
}
package com.yeejoin.amos.boot.module.jxiop.biz.dto;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @description:
* @author: tw
* @createDate: 2023/8/14
*/
@Data
public class SeriesData {
private List<Map<String,Object>> seriesData;
private List<String> axisData;
}
......@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.module.jxiop.api.entity.StationPlan;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationPlanMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.ESDto.ESEquipments;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.SeriesData;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.TimeDate;
import com.yeejoin.amos.boot.module.jxiop.biz.utils.DateUtil;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.Aggregations;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
......@@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
......@@ -42,14 +45,14 @@ public class LargeScreenImpl {
*/
public Map<String, Double> getqg() {
Map<String, Double> mapdta = new HashMap<>();
mapdta.put("SS", 0.0);
mapdta.put("ZFS", 0.0);
mapdta.put("ZFSLJ", 0.0);
mapdta.put("RSD", 0.0);
mapdta.put("YFD", 0.0);
mapdta.put("NFD", 0.0);
mapdta.put("YJHWC", 0.0);
mapdta.put("NJHWC", 0.0);
mapdta.put("SS", 0d);
mapdta.put("ZFS", 0d);
mapdta.put("ZFSLJ", 0d);
mapdta.put("RSD", 0d);
mapdta.put("YFD", 0d);
mapdta.put("NFD", 0d);
mapdta.put("YJHWC", 0d);
mapdta.put("NJHWC", 0d);
//平均数
List<String> value = new ArrayList<>();
value.add(SS);
......@@ -139,17 +142,16 @@ public class LargeScreenImpl {
/**
* 区域
**/
public Map<String, Double> getqy(List<String> gatewayId) {
Map<String, Double> mapdta = new HashMap<>();
mapdta.put("SS", 0.0);
mapdta.put("ZFS", 0.0);
mapdta.put("ZFSLJ", 0.0);
mapdta.put("RSD", 0.0);
mapdta.put("YFD", 0.0);
mapdta.put("NFD", 0.0);
mapdta.put("YJHWC", 0.0);
mapdta.put("NJHWC", 0.0);
mapdta.put("SS", 0d);
mapdta.put("ZFS", 0d);
mapdta.put("ZFSLJ", 0d);
mapdta.put("RSD", 0d);
mapdta.put("YFD", 0d);
mapdta.put("NFD", 0d);
mapdta.put("YJHWC", 0d);
mapdta.put("NJHWC", 0d);
//平均数
List<String> value = new ArrayList<>();
value.add(SS);
......@@ -236,20 +238,203 @@ public class LargeScreenImpl {
}
//获取月日发电量
public List<TimeDate> gettimedate(){
//全国发电趋势
public SeriesData getSeriesDataqg(){
//获取今年当月 日发电趋势
List<Double> listjn= gettimedate( new Date());
//获取去年当月 日发电趋势
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -1);
Date oneYearAgoToday = calendar.getTime();
List<Double> listqn= gettimedate( oneYearAgoToday);
Map<String,Object> mapjn=new HashMap<>();
mapjn.put("data",listjn);
mapjn.put("name","当前值");
Map<String,Object> mapqn=new HashMap<>();
mapjn.put("data",listqn);
mapjn.put("name","同期值");
List<Map<String,Object>> list=new ArrayList<>();
list.add(mapjn);
list.add(mapqn);
SeriesData seriesData=new SeriesData();
seriesData.setSeriesData(list);
//获取日期
List<String> listdate= dayReportnq(new Date());
seriesData.setAxisData(listdate);
return seriesData;
}
//区域发电趋势
public SeriesData getSeriesDataqy( Date date,List<String> gatewayId){
//获取今年当月 日发电趋势
List<Double> listjn= gettimedateqy( new Date(),gatewayId);
//获取去年当月 日发电趋势
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -1);
Date oneYearAgoToday = calendar.getTime();
List<Double> listqn= gettimedateqy( oneYearAgoToday,gatewayId);
Map<String,Object> mapjn=new HashMap<>();
mapjn.put("data",listjn);
mapjn.put("name","当前值");
Map<String,Object> mapqn=new HashMap<>();
mapjn.put("data",listqn);
mapjn.put("name","同期值");
List<Map<String,Object>> list=new ArrayList<>();
list.add(mapjn);
list.add(mapqn);
SeriesData seriesData=new SeriesData();
seriesData.setSeriesData(list);
//获取日期
List<String> listdate= dayReportnq(new Date());
seriesData.setAxisData(listdate);
return seriesData;
}
//获取全国月日发电量
public List<Double> gettimedate( Date date){
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyyMM");
String monthy= myFmt2.format(date);
List<Double> listdate= new ArrayList<>();
List<String> value=new ArrayList<>();
value.add(RSD);
Map<String,List<String>> map=new HashMap<>();
map.put("equipmentIndexName.keyword",value);
List<String> value1=new ArrayList<>();
value1.add(monthy);
map.put("moon.keyword",value1);
List<? extends Terms.Bucket> lidate= commonServiceImpl.getgroupsum(map,"value" ,"day.keyword",ESEquipments.class);
Map<String,Double> mapdta=new HashMap<>();
DecimalFormat format2 = new DecimalFormat("#.0000");
for (Terms.Bucket bucket : lidate) {
Aggregations aggregation= bucket.getAggregations();
List<Aggregation> listdata= Objects.nonNull(aggregation)?aggregation.asList():null;
for (Aggregation agg : listdata) {
ParsedSum parsedSum =(ParsedSum)agg;
mapdta.put(bucket.getKeyAsString(), Double.valueOf(format2.format(parsedSum.getValue())));
}
}
//组装数据
List<String> list= dayReport(date);
for (String s : list) {
if(mapdta!=null&&mapdta.containsKey(s)){
listdate.add(mapdta.get(s));
}else{
listdate.add(0d);
}
}
return listdate;
return null;
}
//获取区域月日发电量
public List<Double> gettimedateqy( Date date,List<String> gatewayId){
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyyMM");
String monthy= myFmt2.format(date);
List<Double> listdate= new ArrayList<>();
List<String> value=new ArrayList<>();
value.add(RSD);
Map<String,List<String>> map=new HashMap<>();
map.put("equipmentIndexName.keyword",value);
map.put("gatewayId.keyword", gatewayId);
List<String> value1=new ArrayList<>();
value1.add(monthy);
map.put("moon.keyword",value1);
List<? extends Terms.Bucket> lidate= commonServiceImpl.getgroupsum(map,"value" ,"day.keyword",ESEquipments.class);
Map<String,Double> mapdta=new HashMap<>();
DecimalFormat format2 = new DecimalFormat("#.0000");
for (Terms.Bucket bucket : lidate) {
Aggregations aggregation= bucket.getAggregations();
List<Aggregation> listdata= Objects.nonNull(aggregation)?aggregation.asList():null;
for (Aggregation agg : listdata) {
ParsedSum parsedSum =(ParsedSum)agg;
mapdta.put(bucket.getKeyAsString(), Double.valueOf(format2.format(parsedSum.getValue())));
}
}
//组装数据
List<String> list= dayReport(date);
for (String s : list) {
if(mapdta!=null&&mapdta.containsKey(s)){
listdate.add(mapdta.get(s));
}else{
listdate.add(0d);
}
}
return listdate;
}
public List<String> dayReport(Date month) {
List<String> list=new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.setTime(month);//month 为指定月份任意日期
int year = cal.get(Calendar.YEAR);
int m = cal.get(Calendar.MONTH);
int dayNumOfMonth = DateUtil.getDaysByYearMonth(year, m);
cal.set(Calendar.DAY_OF_MONTH, 1);// 从一号开始
for (int i = 0; i < dayNumOfMonth; i++ ) {
list.add(String.valueOf(i+1));
}
return list;
}
public List<String> dayReportnq (Date month) {
List<String> list=new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.setTime(month);//month 为指定月份任意日期
int year = cal.get(Calendar.YEAR);
int m = cal.get(Calendar.MONTH);
int dayNumOfMonth = DateUtil.getDaysByYearMonth(year, m);
cal.set(Calendar.DAY_OF_MONTH, 1);// 从一号开始
for (int i = 0; i < dayNumOfMonth; i++ ) {
list.add(m+"-"+String.valueOf(i+1));
}
return list;
}
}
\ No newline at end of file
......@@ -83,13 +83,23 @@ public class PowerGenerationImpl {
int day = calendar.get(Calendar.DATE);
int month = calendar.get(Calendar.MONTH) + 1;
int year = calendar.get(Calendar.YEAR);
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyyMM");
Date now=new Date();
String monthy= myFmt2.format(now);
SimpleDateFormat myFmty=new SimpleDateFormat("yyyy");
Date nowy=new Date();
String yeary= myFmty.format(nowy);
switch (type) {
case "day":
List<ESDailyPowerGeneration> listd= this.getESDailyPowerGeneration(stationCacheInfoDto,indexDto,daty,String.valueOf(day),String.valueOf(month));
List<ESDailyPowerGeneration> listd= this.getESDailyPowerGeneration(stationCacheInfoDto,indexDto,daty,String.valueOf(day),monthy);
dailyPowerGenerationRepository.saveAll(listd);
break;
case "moon":
List<ESMoonPowerGeneration> listm= this.getESMoonPowerGeneration(stationCacheInfoDto,indexDto,daty,String.valueOf(month),String.valueOf(year));
List<ESMoonPowerGeneration> listm= this.getESMoonPowerGeneration(stationCacheInfoDto,indexDto,daty,String.valueOf(month),yeary);
moonPowerGenerationRepository.saveAll(listm);
break;
case "year":
......
package com.yeejoin.amos.boot.module.jxiop.biz.utils;
import io.micrometer.core.instrument.util.TimeUtils;
import java.sql.Time;
import java.text.ParseException;
import java.text.ParsePosition;
......@@ -420,4 +422,19 @@ public static String cronTime(Date date){
}
public static int getDaysByYearMonth(int year, int month) {
Calendar a = Calendar.getInstance();
a.set(Calendar.YEAR, year);
a.set(Calendar.MONTH, month - 1);
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment