Commit 905a0578 authored by chenjian's avatar chenjian

内存检测、CPU检测功能实现

prod开发环境创建
内部服务器环境配置搭建
parent 73c77a52
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ebo.module.vo.SysMESComplaintFormVo;
import com.ebo.system.entity.SysOrgEntity;
import com.ebo.system.entity.SysPostEntity;
import com.ebo.system.entity.SysUserEntity;
import com.ebo.system.entity.SysUserPostEntity;
import com.ebo.system.service.SysOrgService;
import com.ebo.system.service.SysPostService;
import com.ebo.system.service.SysUserPostService;
import com.ebo.system.service.SysUserService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.springframework.security.crypto.password.PasswordEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
public class test {
@Resource
private SysUserService sysUserService;
@Resource
private SysOrgService sysOrgService;
@Resource
private PasswordEncoder passwordEncoder;
@Resource
private SysPostService sysPostService;
@Resource
private SysUserPostService sysUserPostService;
private static String appId = "2753387689773494150";
private static String secret = "zdrhodfkm2itmwy5ns00ndrllwixzjktodmxndiwywi1zgey";
private static String tokenUrl = "https://gzehr.greatpower.net:7051/GCYDHR/restApi/token/genToken";
private String urls="https://gzehr.greatpower.net:7051/GCYDHR/sys/webreq/sysWebReqDef/eai.do?";
private String eaiKey = "eaiKey=apiHQYGDA";
@Test
public void getTekesss(){
String url = "http://10.0.100.20:8080/mes/third/thirdPartyAPI!hnMachineRepairdata.action";
/*JSONObject headers = new JSONObject();
headers.put("DATE_MODIFIED_FROM","2023-07-12");
headers.put("DATE_MODIFIED_TO","2023-07-13");*/
String responseBody = HttpUtil.get(url);
System.out.println("11111"+responseBody);
List<SysMESComplaintFormVo> list = new ArrayList<>();
JSONObject resultData = JSON.parseObject(responseBody);
if(resultData.getBoolean("status")){
JSONArray resultArray = resultData.getJSONArray("result");
for (int i = 0; i < resultArray.size(); i++) {
JSONObject result = resultArray.getJSONObject(i);
SysMESComplaintFormVo sysMESComplaintFormVo = JSON.parseObject(result.toJSONString(),SysMESComplaintFormVo.class);
list.add(sysMESComplaintFormVo);
}
}
}
@Test
public void getTeke(){
String url = "http://192.168.18.37:18080/els/openApi/getToken?key="+"7d45fa41"+"&secret="+"77777c3cafda450cacfc515229d0a902";
String result = HttpUtil.get(url);
log.info("aaa"+result);
String token = "";
JSONObject jsonObject = JSONObject.parseObject(result);
if(jsonObject.getInteger("code") == 200){
JSONObject resultData = jsonObject.getJSONObject("result");
token = resultData.getString("token");
log.info("token::::"+token);
}
JSONObject headers = new JSONObject();
headers.put("bus_account","520027");
headers.put("interface_code","JK20221228000005");
JSONObject body = new JSONObject();
JSONObject data = new JSONObject();
JSONArray headList = new JSONArray();
JSONObject heads = new JSONObject();
heads.put("materialNumber","FH24080100005");
heads.put("materialName","极耳切刀");
// heads.put("cateCode","A10007");
heads.put("cateName","消耗品");
//heads.put("materialSpec","cessee");
heads.put("purchaseType",2);
heads.put("orgCode","001");
heads.put("deleted",0);
heads.put("baseUnit","桶");
heads.put("sourceType","JWL");
/* heads.put("fbk1","2");
heads.put("fbk2","A");
heads.put("remark","测试");
heads.put("materialDesc","111zz");*/
headList.add(heads);
data.put("headList",headList);
body.put("data",data);
body.put("busAccount","520027");
body.put("simpleFlag","0");
body.put("interfaceCode","createMaterialHead");
headers.put("body",body);
Map<String,String> header = new HashMap<>();
header.put("token",token);
String headersUrl = "http://192.168.18.37:18080/els/openApi/invoke";
log.info("headersUrl::::"+headersUrl);
log.info("headers::::"+headers);
String responseBody = HttpUtil.createRequest(Method.POST, headersUrl).addHeaders(header).body(JSON.toJSONString(headers)).execute().body();
log.info("responseBody::::"+responseBody);
}
@Test
public void sds() {
Map<String,Object> params = new HashMap<>();
params.put("appId",appId);
params.put("secret",secret);
String result = HttpUtil.post(tokenUrl,params);
JSONObject lt = JSONObject.parseObject(result);
if(lt.getString("data") != null){
Map<String,Object> paramsSysWebReqDef = new HashMap<>();
paramsSysWebReqDef.put("empId","");
paramsSysWebReqDef.put("empName","");
paramsSysWebReqDef.put("depart","");
paramsSysWebReqDef.put("company","");
paramsSysWebReqDef.put("superior","");
paramsSysWebReqDef.put("PageNum",1);
paramsSysWebReqDef.put("PageSize",5);
String hrUrl = urls+eaiKey+"&token="+lt.getString("data");
String responseBody = HttpUtil.createRequest(Method.POST, hrUrl).body(JSON.toJSONString(paramsSysWebReqDef)).execute().body();
log.info("responseBody:{}", JSON.toJSONString(responseBody));
JSONObject request = JSONObject.parseObject(responseBody);
SysUserEntity sysUserEntity = null;
if(request.getBoolean("success")){
JSONArray datas = request.getJSONArray("data");
if(datas != null){
for (int i = 0; i < datas.size(); i++) {
JSONObject jsonObject = datas.getJSONObject(i);
sysUserEntity = sysUserService.getOne(new LambdaQueryWrapper<SysUserEntity>()
.eq(SysUserEntity::getUsername,jsonObject.getString("F_GH"))
);
if(sysUserEntity != null){
return;
}
String F_BM1_NAME = jsonObject.getString("F_BM1_NAME");
SysOrgEntity sysOrgEntity = null;
String fbmPid1 = "";//一级id
String fbmPid2 = "";//二级id
String fbmPid3 = "";//三级id
String fbmPid4 = "";//四级id
if(StringUtils.isNotEmpty(F_BM1_NAME)){
sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
.eq(SysOrgEntity::getName,F_BM1_NAME));
if(sysOrgEntity == null){
sysOrgEntity = new SysOrgEntity();
sysOrgEntity.setName(F_BM1_NAME);
sysOrgEntity.setCreator("HR");
sysOrgEntity.setTenantCode("A01");
sysOrgEntity.setUpdater("HR");
sysOrgService.save(sysOrgEntity);
}
fbmPid1 = sysOrgEntity.getId();
}
String F_BM2_NAME = jsonObject.getString("F_BM2_NAME");
if(StringUtils.isNotEmpty(F_BM2_NAME)){
sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
.eq(SysOrgEntity::getName,F_BM2_NAME));
if(sysOrgEntity == null){
sysOrgEntity = new SysOrgEntity();
sysOrgEntity.setPid(fbmPid1);
sysOrgEntity.setName(F_BM2_NAME);
sysOrgEntity.setCreator("HR");
sysOrgEntity.setTenantCode("A01");
sysOrgEntity.setUpdater("HR");
sysOrgService.save(sysOrgEntity);
}
fbmPid2 = sysOrgEntity.getId();
}
String F_BM3_NAME = jsonObject.getString("F_BM3_NAME");
if(StringUtils.isNotEmpty(F_BM3_NAME)){
sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
.eq(SysOrgEntity::getName,F_BM3_NAME));
if(sysOrgEntity == null){
sysOrgEntity = new SysOrgEntity();
sysOrgEntity.setPid(fbmPid2);
sysOrgEntity.setName(F_BM3_NAME);
sysOrgEntity.setCreator("HR");
sysOrgEntity.setTenantCode("A01");
sysOrgEntity.setUpdater("HR");
sysOrgService.save(sysOrgEntity);
}
fbmPid3 = sysOrgEntity.getId();
}
String F_BM4_NAME = jsonObject.getString("F_BM4_NAME");
if(StringUtils.isNotEmpty(F_BM4_NAME)){
sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
.eq(SysOrgEntity::getName,F_BM4_NAME));
if(sysOrgEntity == null){
sysOrgEntity = new SysOrgEntity();
sysOrgEntity.setPid(fbmPid3);
sysOrgEntity.setName(F_BM4_NAME);
sysOrgEntity.setCreator("HR");
sysOrgEntity.setTenantCode("A01");
sysOrgEntity.setUpdater("HR");
sysOrgService.save(sysOrgEntity);
}
fbmPid4 = sysOrgEntity.getId();
}
sysUserEntity = new SysUserEntity();
sysUserEntity.setCreator("HR");
sysUserEntity.setUpdater("HR");
sysUserEntity.setTenantCode("A01");
sysUserEntity.setMobile(jsonObject.getString("F_SJHM"));
sysUserEntity.setUsername(jsonObject.getString("F_GH"));
sysUserEntity.setRealName(jsonObject.getString("F_XM"));
if(jsonObject.getString("F_XB_NAME").equals("男")){
sysUserEntity.setGender(0);
}else {
sysUserEntity.setGender(1);
}
sysUserEntity.setStatus(1);
sysUserEntity.setPassword(passwordEncoder.encode("abcd1234"));
if(StringUtils.isNotEmpty(fbmPid4)){
sysUserEntity.setOrgId(fbmPid4);
}else {
if(StringUtils.isNotEmpty(fbmPid3)){
sysUserEntity.setOrgId(fbmPid3);
}else {
if(StringUtils.isNotEmpty(fbmPid2)){
sysUserEntity.setOrgId(fbmPid2);
}else {
sysUserEntity.setOrgId(fbmPid1);
}
}
}
sysUserService.save(sysUserEntity);
if(StringUtils.isNotEmpty(jsonObject.getString("F_GWMC_NAME"))){
SysPostEntity sysPostEntity = null;
sysPostEntity = sysPostService.getOne(new LambdaQueryWrapper<SysPostEntity>()
.eq(SysPostEntity::getPostName,jsonObject.getString("F_GWMC_NAME")));
if(sysPostEntity == null){
sysPostEntity = new SysPostEntity();
sysPostEntity.setPostCode(jsonObject.getString("F_GWMC"));
sysPostEntity.setPostName(jsonObject.getString("F_GWMC_NAME"));
sysPostEntity.setTenantCode("A01");
sysPostEntity.setStatus(1);
sysPostEntity.setCreator("HR");
sysPostEntity.setUpdater("HR");
sysPostService.save(sysPostEntity);
}
SysUserPostEntity sysUserPostEntity = new SysUserPostEntity();
sysUserPostEntity.setPostId(sysPostEntity.getId());
sysUserPostEntity.setUserId(sysUserEntity.getId());
sysUserPostEntity.setTenantCode("A01");
sysUserPostEntity.setCreator("HR");
sysUserPostEntity.setUpdater("HR");
sysUserPostService.save(sysUserPostEntity);
}
}
}
}
}
}
}
//import cn.hutool.http.HttpUtil;
//import cn.hutool.http.Method;
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.ebo.module.vo.SysMESComplaintFormVo;
//import com.ebo.system.entity.SysOrgEntity;
//import com.ebo.system.entity.SysPostEntity;
//import com.ebo.system.entity.SysUserEntity;
//import com.ebo.system.entity.SysUserPostEntity;
//import com.ebo.system.service.SysOrgService;
//import com.ebo.system.service.SysPostService;
//import com.ebo.system.service.SysUserPostService;
//import com.ebo.system.service.SysUserService;
//import jakarta.annotation.Resource;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.junit.Test;
//import org.springframework.security.crypto.password.PasswordEncoder;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//@Slf4j
//public class test {
//
// @Resource
// private SysUserService sysUserService;
// @Resource
// private SysOrgService sysOrgService;
// @Resource
// private PasswordEncoder passwordEncoder;
// @Resource
// private SysPostService sysPostService;
// @Resource
// private SysUserPostService sysUserPostService;
// private static String appId = "2753387689773494150";
//
// private static String secret = "zdrhodfkm2itmwy5ns00ndrllwixzjktodmxndiwywi1zgey";
//
// private static String tokenUrl = "https://gzehr.greatpower.net:7051/GCYDHR/restApi/token/genToken";
//
// private String urls="https://gzehr.greatpower.net:7051/GCYDHR/sys/webreq/sysWebReqDef/eai.do?";
//
// private String eaiKey = "eaiKey=apiHQYGDA";
//
//
// @Test
// public void getTekesss(){
// String url = "http://10.0.100.20:8080/mes/third/thirdPartyAPI!hnMachineRepairdata.action";
// /*JSONObject headers = new JSONObject();
// headers.put("DATE_MODIFIED_FROM","2023-07-12");
// headers.put("DATE_MODIFIED_TO","2023-07-13");*/
// String responseBody = HttpUtil.get(url);
// System.out.println("11111"+responseBody);
//
// List<SysMESComplaintFormVo> list = new ArrayList<>();
// JSONObject resultData = JSON.parseObject(responseBody);
// if(resultData.getBoolean("status")){
// JSONArray resultArray = resultData.getJSONArray("result");
// for (int i = 0; i < resultArray.size(); i++) {
// JSONObject result = resultArray.getJSONObject(i);
// SysMESComplaintFormVo sysMESComplaintFormVo = JSON.parseObject(result.toJSONString(),SysMESComplaintFormVo.class);
// list.add(sysMESComplaintFormVo);
// }
// }
// }
//
//
//
//
// @Test
// public void getTeke(){
// String url = "http://192.168.18.37:18080/els/openApi/getToken?key="+"7d45fa41"+"&secret="+"77777c3cafda450cacfc515229d0a902";
//
// String result = HttpUtil.get(url);
// log.info("aaa"+result);
// String token = "";
// JSONObject jsonObject = JSONObject.parseObject(result);
// if(jsonObject.getInteger("code") == 200){
// JSONObject resultData = jsonObject.getJSONObject("result");
// token = resultData.getString("token");
// log.info("token::::"+token);
// }
//
// JSONObject headers = new JSONObject();
// headers.put("bus_account","520027");
// headers.put("interface_code","JK20221228000005");
//
//
// JSONObject body = new JSONObject();
// JSONObject data = new JSONObject();
// JSONArray headList = new JSONArray();
// JSONObject heads = new JSONObject();
// heads.put("materialNumber","FH24080100005");
// heads.put("materialName","极耳切刀");
// // heads.put("cateCode","A10007");
// heads.put("cateName","消耗品");
// //heads.put("materialSpec","cessee");
// heads.put("purchaseType",2);
// heads.put("orgCode","001");
// heads.put("deleted",0);
// heads.put("baseUnit","桶");
// heads.put("sourceType","JWL");
// /* heads.put("fbk1","2");
// heads.put("fbk2","A");
// heads.put("remark","测试");
//
// heads.put("materialDesc","111zz");*/
// headList.add(heads);
// data.put("headList",headList);
//
// body.put("data",data);
// body.put("busAccount","520027");
// body.put("simpleFlag","0");
// body.put("interfaceCode","createMaterialHead");
// headers.put("body",body);
// Map<String,String> header = new HashMap<>();
// header.put("token",token);
// String headersUrl = "http://192.168.18.37:18080/els/openApi/invoke";
// log.info("headersUrl::::"+headersUrl);
// log.info("headers::::"+headers);
// String responseBody = HttpUtil.createRequest(Method.POST, headersUrl).addHeaders(header).body(JSON.toJSONString(headers)).execute().body();
// log.info("responseBody::::"+responseBody);
// }
//
//
// @Test
// public void sds() {
// Map<String,Object> params = new HashMap<>();
//
// params.put("appId",appId);
// params.put("secret",secret);
// String result = HttpUtil.post(tokenUrl,params);
//
// JSONObject lt = JSONObject.parseObject(result);
// if(lt.getString("data") != null){
// Map<String,Object> paramsSysWebReqDef = new HashMap<>();
// paramsSysWebReqDef.put("empId","");
// paramsSysWebReqDef.put("empName","");
// paramsSysWebReqDef.put("depart","");
// paramsSysWebReqDef.put("company","");
// paramsSysWebReqDef.put("superior","");
// paramsSysWebReqDef.put("PageNum",1);
// paramsSysWebReqDef.put("PageSize",5);
// String hrUrl = urls+eaiKey+"&token="+lt.getString("data");
//
// String responseBody = HttpUtil.createRequest(Method.POST, hrUrl).body(JSON.toJSONString(paramsSysWebReqDef)).execute().body();
// log.info("responseBody:{}", JSON.toJSONString(responseBody));
// JSONObject request = JSONObject.parseObject(responseBody);
// SysUserEntity sysUserEntity = null;
// if(request.getBoolean("success")){
// JSONArray datas = request.getJSONArray("data");
// if(datas != null){
// for (int i = 0; i < datas.size(); i++) {
// JSONObject jsonObject = datas.getJSONObject(i);
// sysUserEntity = sysUserService.getOne(new LambdaQueryWrapper<SysUserEntity>()
// .eq(SysUserEntity::getUsername,jsonObject.getString("F_GH"))
// );
// if(sysUserEntity != null){
// return;
// }
// String F_BM1_NAME = jsonObject.getString("F_BM1_NAME");
// SysOrgEntity sysOrgEntity = null;
// String fbmPid1 = "";//一级id
// String fbmPid2 = "";//二级id
// String fbmPid3 = "";//三级id
// String fbmPid4 = "";//四级id
// if(StringUtils.isNotEmpty(F_BM1_NAME)){
// sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
// .eq(SysOrgEntity::getName,F_BM1_NAME));
// if(sysOrgEntity == null){
// sysOrgEntity = new SysOrgEntity();
// sysOrgEntity.setName(F_BM1_NAME);
// sysOrgEntity.setCreator("HR");
// sysOrgEntity.setTenantCode("A01");
// sysOrgEntity.setUpdater("HR");
// sysOrgService.save(sysOrgEntity);
// }
// fbmPid1 = sysOrgEntity.getId();
// }
// String F_BM2_NAME = jsonObject.getString("F_BM2_NAME");
// if(StringUtils.isNotEmpty(F_BM2_NAME)){
// sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
// .eq(SysOrgEntity::getName,F_BM2_NAME));
// if(sysOrgEntity == null){
// sysOrgEntity = new SysOrgEntity();
// sysOrgEntity.setPid(fbmPid1);
// sysOrgEntity.setName(F_BM2_NAME);
// sysOrgEntity.setCreator("HR");
// sysOrgEntity.setTenantCode("A01");
// sysOrgEntity.setUpdater("HR");
// sysOrgService.save(sysOrgEntity);
// }
// fbmPid2 = sysOrgEntity.getId();
// }
// String F_BM3_NAME = jsonObject.getString("F_BM3_NAME");
// if(StringUtils.isNotEmpty(F_BM3_NAME)){
// sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
// .eq(SysOrgEntity::getName,F_BM3_NAME));
// if(sysOrgEntity == null){
// sysOrgEntity = new SysOrgEntity();
// sysOrgEntity.setPid(fbmPid2);
// sysOrgEntity.setName(F_BM3_NAME);
// sysOrgEntity.setCreator("HR");
// sysOrgEntity.setTenantCode("A01");
// sysOrgEntity.setUpdater("HR");
// sysOrgService.save(sysOrgEntity);
// }
// fbmPid3 = sysOrgEntity.getId();
// }
//
// String F_BM4_NAME = jsonObject.getString("F_BM4_NAME");
// if(StringUtils.isNotEmpty(F_BM4_NAME)){
// sysOrgEntity = sysOrgService.getOne(new LambdaQueryWrapper<SysOrgEntity>()
// .eq(SysOrgEntity::getName,F_BM4_NAME));
// if(sysOrgEntity == null){
// sysOrgEntity = new SysOrgEntity();
// sysOrgEntity.setPid(fbmPid3);
// sysOrgEntity.setName(F_BM4_NAME);
// sysOrgEntity.setCreator("HR");
// sysOrgEntity.setTenantCode("A01");
// sysOrgEntity.setUpdater("HR");
// sysOrgService.save(sysOrgEntity);
// }
// fbmPid4 = sysOrgEntity.getId();
// }
//
// sysUserEntity = new SysUserEntity();
// sysUserEntity.setCreator("HR");
// sysUserEntity.setUpdater("HR");
// sysUserEntity.setTenantCode("A01");
// sysUserEntity.setMobile(jsonObject.getString("F_SJHM"));
// sysUserEntity.setUsername(jsonObject.getString("F_GH"));
// sysUserEntity.setRealName(jsonObject.getString("F_XM"));
// if(jsonObject.getString("F_XB_NAME").equals("男")){
// sysUserEntity.setGender(0);
// }else {
// sysUserEntity.setGender(1);
// }
// sysUserEntity.setStatus(1);
// sysUserEntity.setPassword(passwordEncoder.encode("abcd1234"));
// if(StringUtils.isNotEmpty(fbmPid4)){
// sysUserEntity.setOrgId(fbmPid4);
// }else {
// if(StringUtils.isNotEmpty(fbmPid3)){
// sysUserEntity.setOrgId(fbmPid3);
// }else {
// if(StringUtils.isNotEmpty(fbmPid2)){
// sysUserEntity.setOrgId(fbmPid2);
// }else {
// sysUserEntity.setOrgId(fbmPid1);
// }
// }
// }
// sysUserService.save(sysUserEntity);
//
// if(StringUtils.isNotEmpty(jsonObject.getString("F_GWMC_NAME"))){
// SysPostEntity sysPostEntity = null;
// sysPostEntity = sysPostService.getOne(new LambdaQueryWrapper<SysPostEntity>()
// .eq(SysPostEntity::getPostName,jsonObject.getString("F_GWMC_NAME")));
// if(sysPostEntity == null){
// sysPostEntity = new SysPostEntity();
// sysPostEntity.setPostCode(jsonObject.getString("F_GWMC"));
// sysPostEntity.setPostName(jsonObject.getString("F_GWMC_NAME"));
// sysPostEntity.setTenantCode("A01");
// sysPostEntity.setStatus(1);
// sysPostEntity.setCreator("HR");
// sysPostEntity.setUpdater("HR");
// sysPostService.save(sysPostEntity);
// }
// SysUserPostEntity sysUserPostEntity = new SysUserPostEntity();
// sysUserPostEntity.setPostId(sysPostEntity.getId());
// sysUserPostEntity.setUserId(sysUserEntity.getId());
// sysUserPostEntity.setTenantCode("A01");
// sysUserPostEntity.setCreator("HR");
// sysUserPostEntity.setUpdater("HR");
// sysUserPostService.save(sysUserPostEntity);
// }
//
// }
// }
// }
// }
//
// }
//}
package com.ebo.module.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "xxljob.executor.qqemail")
public class QQEmailConfig {
private String toEmail;
private String smtpHost;
private int smtpPort;
private String smtpUser;
private String smtpPass;
}
\ No newline at end of file
package com.ebo.module.task;
import com.ebo.module.utils.GetAccessToken;
import com.ebo.module.utils.SendMessageEmail;
import com.google.gson.Gson;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Map;
@Component
@Slf4j
public class CpuMonitorHandler extends IJobHandler {
@Autowired
private SendMessageEmail sendMessageEmail;
private final static String apiUrl = "http://localhost:8659/monitor/server/cpu";
@XxlJob("cpuMonitorJob")
@Override
public void execute() throws Exception {
log.info("Cpu Monitor Job Start");
String accessToken = GetAccessToken.getAccessToken();
if (accessToken == null) {
log.error("获取令牌失败");
return;
}
URIBuilder uriBuilder = new URIBuilder(apiUrl);
uriBuilder.addParameter("access_token", accessToken);
String urlWithParams = uriBuilder.build().toString();
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(urlWithParams);
CloseableHttpResponse response = null;
try {
response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
String result = EntityUtils.toString(entity);
Map<String, Object> responseresult = new Gson().fromJson(result, Map.class);
Map<String, Object> data = (Map<String, Object>) responseresult.get("data");
double free = Double.parseDouble(data.get("free").toString());
double threshold = 80; // 设置阈值
if ((100-free) > threshold) {
sendMessageEmail.sendAlert("Cpu内存占用过高警告", "目前内存占用为: " + (100-free) + "%");
} else {
log.info("Cpu内存占用正常: " + (100-free) + "%");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
log.info("Cpu Monitor Job End");
}
}
\ No newline at end of file
package com.ebo.module.task;
import com.ebo.module.utils.GetAccessToken;
import com.ebo.module.utils.SendMessageEmail;
import com.google.gson.Gson;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Map;
@Component
@Slf4j
public class JvmMonitorHandler extends IJobHandler {
@Autowired
private SendMessageEmail sendMessageEmail;
private final static String apiUrl = "http://localhost:8659/monitor/server/jvm";
@XxlJob("jvmMonitorJob")
@Override
public void execute() throws Exception {
log.info("Jvm Monitor Job Start");
String accessToken = GetAccessToken.getAccessToken();
if (accessToken == null) {
log.error("获取令牌失败");
return;
}
// 构建带有查询参数的 URL
URIBuilder uriBuilder = new URIBuilder(apiUrl);
uriBuilder.addParameter("access_token", accessToken);
String urlWithParams = uriBuilder.build().toString();
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(urlWithParams);
CloseableHttpResponse response = null;
try {
response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
String result = EntityUtils.toString(entity);
// 解析响应数据
Map<String, Object> responseresult = new Gson().fromJson(result, Map.class);
Map<String, Object> data = (Map<String, Object>) responseresult.get("data");
log.info("data为{}",data);
double max = Double.parseDouble(data.get("max").toString());
double total = Double.parseDouble(data.get("total").toString());
double jvmUsage = total/max;
double threshold = 90; // 设置阈值
if (jvmUsage > threshold) {
// 发送警报
sendMessageEmail.sendAlert("内存占用过高警告", "目前内存占用为: " + jvmUsage + "%");
} else {
log.info("内存占用正常: " + jvmUsage + "%");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
log.info("Jvm Monitor Job End");
}
}
\ No newline at end of file
package com.ebo.module.task;
import com.ebo.module.utils.GetAccessToken;
import com.ebo.module.utils.SendMessageEmail;
import com.google.gson.Gson;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Map;
@Component
@Slf4j
public class MemoryMonitorHandler extends IJobHandler {
@Autowired
private SendMessageEmail sendMessageEmail;
@XxlJob("memoryMonitorJob")
@Override
public void execute() throws Exception {
log.info("Memory Monitor Job Start");
String accessToken = GetAccessToken.getAccessToken();
if (accessToken == null) {
log.error("获取令牌失败");
return;
}
String apiUrl = "http://localhost:8659/monitor/server/mem";
// 构建带有查询参数的 URL
URIBuilder uriBuilder = new URIBuilder(apiUrl);
uriBuilder.addParameter("access_token", accessToken);
String urlWithParams = uriBuilder.build().toString();
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(urlWithParams);
CloseableHttpResponse response = null;
try {
response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
String result = EntityUtils.toString(entity);
// 解析响应数据
Map<String, Object> responseresult = new Gson().fromJson(result, Map.class);
Map<String, Object> data = (Map<String, Object>) responseresult.get("data");
// 检查内存使用率
double usage = Double.parseDouble(data.get("usage").toString());
double threshold = 80.0; // 设置阈值
if (usage > threshold) {
// 发送警报
sendMessageEmail.sendAlert("内存占用过高警告", "目前内存占用为: " + usage + "%");
} else {
log.info("内存占用正常: " + usage + "%");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
log.info("Memory Monitor Job End");
}
}
\ No newline at end of file
package com.ebo.module.utils;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.Map;
@Slf4j
public class GetAccessToken {
/**
* 以管理员身份跳过认证
* @return
*/
public static String getAccessToken() {
String authUrl = "http://localhost:8659/sys/auth/login";
String username = "guoxianhui";
String password = "guoxianhui2002";
String key = ""; // 如果有 key,填写对应的值
String captcha = ""; // 如果有 captcha,填写对应的值
HttpPost httpPost = new HttpPost(authUrl);
httpPost.setHeader("Content-Type", "application/json");
String json = String.format("{\"username\":\"%s\",\"password\":\"%s\",\"key\":\"%s\",\"captcha\":\"%s\"}",
username, password, key, captcha);
try (CloseableHttpClient httpClient = HttpClients.createDefault();){
StringEntity entity = new StringEntity(json);
httpPost.setEntity(entity);
try (CloseableHttpResponse response = httpClient.execute(httpPost);){
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
String result = EntityUtils.toString(responseEntity);
log.info("Auth Response: " + result);
// 解析响应数据
Map<String, Object> responseMap = new Gson().fromJson(result, Map.class);
Map<String, Object> dataMap = (Map<String, Object>) responseMap.get("data");
return dataMap.get("access_token").toString();
}
}
} catch (IOException e) {
log.error("Failed to get access token", e);
}
return null;
}
}
package com.ebo.module.utils;
import com.ebo.module.config.QQEmailConfig;
import jakarta.mail.*;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Properties;
@Slf4j
@Component
public class SendMessageEmail {
private final QQEmailConfig qqemailConfig;
@Autowired
public SendMessageEmail(QQEmailConfig qqemailConfig) {
this.qqemailConfig = qqemailConfig;
}
public void sendAlert(String subject, String message) {
// 发送邮件
Properties props = new Properties();
props.put("mail.smtp.host", qqemailConfig.getSmtpHost());
props.put("mail.smtp.port", qqemailConfig.getSmtpPort());
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(qqemailConfig.getSmtpUser(), qqemailConfig.getSmtpPass());
}
});
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(qqemailConfig.getSmtpUser(), false));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(qqemailConfig.getToEmail(), false));
msg.setSubject(subject);
msg.setText(message);
msg.setSentDate(new Date());
Transport.send(msg);
log.info("Alert sent successfully");
} catch (MessagingException e) {
log.info("Failed to send alert", e);
}
}
}
# 预发布环境
spring:
data:
redis:
database: 13
host: 10.18.18.51
port: 6379
password: 123456
timeout: 6000ms # 连接超时时长(毫秒)
datasource:
dynamic:
hikari: # Hikari 连接池全局配置
connection-timeout: 30000 # 等待连接池分配链接的最大时长(毫秒),超过这个时长还没有可用的连接则发生 SQLException,默认:30 秒
minimum-idle: 2 # 最小空闲连接数
maximum-pool-size: 10 # 最大连接数
idle-timeout: 600000 # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10 分钟
max-lifetime: 1800000 # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认: 30 分钟
connection-test-query: SELECT 1
primary: master
datasource:
master:
# MySQL8
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/itask?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: root
password: Mysql@cyunsing
oms:
# MySQL8
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/itask?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: root
password: Mysql@cyunsing
logging:
level:
org:
springframework:
jdbc:
core:
JdbcTemplate: DEBUG
xxl:
job:
enable: true #是否开始任务
admin:
## addresses: http://xxljob.sit.gdyibo.com.cn/xxl-job-admin #xxljob调度中心部署 例如:http://127.0.0.1:8080/xxl-job-admin
addresses: http://10.18.18.68:8080/xxl-job-admin
executor:
appname: orderpt #xxljob配置的执行器名称,
ip: #执行器IP,默认为空表示自动获取IP
port: 9501 #xxljob配置的端口号,默认为9999
logpath: /usr/local/java/ITask/logs #执行器运行日志文件存储磁盘路径
logretentiondays: 15 #调度中心日志表数据保存天数,过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能
accessToken: Ebo-Token #调度中心通讯TOKEN [选填]:非空时启用
execl:
# outFileTempPath: /Users/gxh/Documents/ybProject/fast-spms3/fast-spms-admin/oms-server/src/main/resources/execlOutTemp
outFileTempPath: /usr/local/java/ITask/execlOutTemp
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
......@@ -4,7 +4,7 @@ spring:
database: 13
host: 127.0.0.1
port: 6379
password: Yb#2021&yb
password: 123456
timeout: 6000ms # 连接超时时长(毫秒)
datasource:
dynamic:
......@@ -20,15 +20,15 @@ spring:
master:
# MySQL8
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://119.23.144.105:3306/fast_order_pt_dev?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: orderdev
password: Orderdev@2099
url: jdbc:mysql://127.0.0.1:3306/itask?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: root
password: Mysql@cyunsing
oms:
# MySQL8
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://119.23.144.105:3306/fast_order_pt_dev?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: orderdev
password: Orderdev@2099
url: jdbc:mysql://127.0.0.1:3306/itask?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: root
password: Mysql@cyunsing
xxl:
job:
enable: false #是否开始任务
......
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