package com.wgcloud.service; import cn.hutool.core.bean.BeanUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.wgcloud.entity.AppInfo; import com.wgcloud.entity.HostGroup; import com.wgcloud.mapper.AppInfoMapper; import com.wgcloud.mapper.AppStateMapper; import com.wgcloud.util.DateUtil; import com.wgcloud.util.HostUtil; import com.wgcloud.util.UUIDUtil; import com.wgcloud.util.staticvar.StaticKeys; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @version v3.3 * @ClassName:AppInfoService.java * @author: http://www.wgstart.com * @date: 2021年1月16日 * @Description: AppInfoService.java * @Copyright: 2019-2021 wgcloud. All rights reserved. */ @Service public class AppInfoService { private static final Logger logger = LoggerFactory.getLogger(AppInfoService.class); public PageInfo selectByParams(Map params, int currPage, int pageSize) throws Exception { PageHelper.startPage(currPage, pageSize); List list = appInfoMapper.selectByParams(params); PageInfo pageInfo = new PageInfo(list); return pageInfo; } public void save(AppInfo AppInfo, HttpServletRequest request) throws Exception { AppInfo.setId(UUIDUtil.getUUID()); Date nowDate = DateUtil.getNowTime(); AppInfo.setCreateTime(nowDate); //第一次保存,初始化一些数据 AppInfo.setThreadsNum("0"); AppInfo.setCpuPer(0d); AppInfo.setMemPer(0d); AppInfo.setGatherPid("获取中"); AppInfo.setReadBytes("0"); AppInfo.setWritesBytes("0"); AppInfo.setAppTimes("获取中"); if (!StringUtils.isEmpty(AppInfo.getAppPid())) { AppInfo.setAppPid(AppInfo.getAppPid().trim()); } appInfoMapper.save(AppInfo); //保存页面动态添加的进程数据 addExtDataForm(AppInfo, request, nowDate); } /** * 保存页面动态添加的进程数据 * * @param appInfo * @param request */ private void addExtDataForm(AppInfo appInfo, HttpServletRequest request, Date nowDate) throws Exception { String dataFromIndex = request.getParameter("dataFromIndex"); int rowsLen = 0; if (!StringUtils.isEmpty(dataFromIndex)) { for (int i = 0; i <= Integer.valueOf(dataFromIndex); i++) { String appPid = request.getParameter("appPid_" + i); String appName = request.getParameter("appName_" + i); if (StringUtils.isEmpty(appPid) || StringUtils.isEmpty(appName)) { continue; } AppInfo appInfoExt = new AppInfo(); BeanUtil.copyProperties(appInfo, appInfoExt, true); appInfoExt.setId(UUIDUtil.getUUID()); appInfoExt.setCreateTime(nowDate); appInfoExt.setAppPid(appPid.trim()); appInfoExt.setAppName(appName.trim()); appInfoMapper.save(appInfoExt); saveLog(request, StaticKeys.LOG_ADD, appInfoExt); rowsLen += 1; } } } public int deleteByHostName(Map map) throws Exception { return appInfoMapper.deleteByHostName(map); } @Transactional public void saveRecord(List recordList) throws Exception { if (recordList.size() < 1) { return; } for (AppInfo as : recordList) { as.setId(UUIDUtil.getUUID()); } appInfoMapper.insertList(recordList); } public int countByParams(Map params) throws Exception { return appInfoMapper.countByParams(params); } @Transactional public int deleteById(String[] id) throws Exception { return appInfoMapper.deleteById(id); } @Transactional public void updateRecord(List recordList) throws Exception { if (recordList.size() < 1) { return; } appInfoMapper.updateList(recordList); } public void downByHostName(List recordList) throws Exception { if (recordList.size() < 1) { return; } appInfoMapper.downByHostName(recordList); } public void updateById(AppInfo AppInfo) throws Exception { appInfoMapper.updateById(AppInfo); } public AppInfo selectById(String id) throws Exception { return appInfoMapper.selectById(id); } public List selectAllByParams(Map params) throws Exception { return appInfoMapper.selectAllByParams(params); } /** * 设置资源分组 begin * * @param recordList */ public List setGroupInList(List recordList) throws Exception { Map params = new HashMap(); params.put("groupType", StaticKeys.HOST_GROUP_1); List hostGroupList = hostGroupService.selectAllByParams(params); //查询所有主机分组列表,封装为map Map hostGroupMap = new HashMap<>(); for (HostGroup hostGroup : hostGroupList) { hostGroupMap.put(hostGroup.getId(), hostGroup.getGroupName()); } for (AppInfo appInfo : recordList) { if (!StringUtils.isEmpty(appInfo.getGroupId())) { appInfo.setGroupId(hostGroupMap.get(appInfo.getGroupId())); } } return hostGroupList; } /** * 保存操作日志 * * @param request 获取当前登录用户 * @param action 操作标识 */ public void saveLog(HttpServletRequest request, String action, AppInfo appInfo) { if (null == appInfo) { return; } logInfoService.save(HostUtil.getAccountByRequest(request).getAccount() + action + "进程监测信息:" + appInfo.getHostname() + "," + appInfo.getAppName(), "获取进程方法:" + appInfo.getAppPid(), StaticKeys.LOG_XTCZ); } @Autowired private AppInfoMapper appInfoMapper; @Autowired private AppStateMapper appStateMapper; @Resource private HostGroupService hostGroupService; @Autowired private LogInfoService logInfoService; }