分离Log Manage模块

实现统计分析管理 根据菜单名称查询对应台站信息接口
实现统计分析管理 分页查询气溶胶数据接口
实现统计分析管理 分页查询气象数据接口
实现统计分析管理 分页查询状态数据接口
实现统计分析管理 查看气溶胶数据详情接口
实现统计分析管理 查看气溶胶ENERGY数据接口
实现统计分析管理 查看气溶胶RESOLUTION数据接口
实现统计分析管理 查看气溶胶EFFICIENCY数据接口
实现统计分析管理 查看气溶胶CERTIFICATE数据接口
This commit is contained in:
qiaoqinzheng 2023-06-12 09:11:52 +08:00
parent b6c3f270f8
commit 3347b16dde
29 changed files with 980 additions and 94 deletions

View File

@ -7,13 +7,18 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsMetData;
import org.jeecg.modules.entity.GardsSampleData;
import org.jeecg.modules.entity.GardsSohData;
import org.jeecg.modules.service.IGardsMetDataService;
import org.jeecg.modules.service.IGardsSampleDataService;
import org.jeecg.modules.service.IGardsSohDataService;
import org.jeecg.modules.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("webStatistics")
@ -26,23 +31,65 @@ public class WebStatisticsController {
private IGardsMetDataService gardsMetDataService;
@Autowired
private IGardsSohDataService gardsSohDataService;
@Autowired
private ISysDictService sysDictService;
@Autowired
private IGardsSampleCertService gardsSampleCertService;
@GetMapping("findStationList")
@ApiOperation(value = "根据菜单名称查询对应的台站信息", notes = "根据菜单名称查询对应的台站信息")
public Result findStationList(String menuName){
return sysDictService.findList(menuName);
}
@GetMapping("findParticulatePage")
@ApiOperation(value = "颗粒物分页查询", notes = "颗粒物分页查询")
public Result findParticulatePage(QueryRequest queryRequest, GardsSampleData gardsSampleData){
return gardsSampleDataService.findParticulatePage(queryRequest, gardsSampleData);
@ApiOperation(value = "气溶胶分页查询", notes = "气溶胶分页查询")
public Result findParticulatePage(QueryRequest queryRequest, List<Integer> stationIds, String dataType,
String spectralQualifie, @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,@DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime){
return gardsSampleDataService.findParticulatePage(queryRequest, stationIds, dataType, spectralQualifie, startTime, endTime);
}
@GetMapping("findMetPage")
@ApiOperation(value = "气象数据分页查询", notes = "气象数据分页查询")
public Result findMetPage(QueryRequest queryRequest, GardsMetData gardsMetData){
return gardsMetDataService.findMetPage(queryRequest, gardsMetData);
public Result findMetPage(QueryRequest queryRequest, List<Integer> stationIds,@DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,@DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime){
return gardsMetDataService.findMetPage(queryRequest, stationIds, startTime, endTime);
}
@GetMapping("findSohPage")
@ApiOperation(value = "状态数据分页查询", notes = "状态数据分页查询")
public Result findSohPage(QueryRequest queryRequest, GardsSohData gardsSohData){
return gardsSohDataService.findSohPage(queryRequest, gardsSohData);
public Result findSohPage(QueryRequest queryRequest, List<Integer> stationIds,@DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,@DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime){
return gardsSohDataService.findSohPage(queryRequest, stationIds, startTime, endTime);
}
@GetMapping("findParticulateInfo")
@ApiOperation(value = "查看IMS DATA下气溶胶数据详情", notes = "查看IMS DATA下气溶胶数据详情")
public Result findParticulateInfo(Integer sampleId){
return gardsSampleDataService.findParticulateInfo(sampleId);
}
@GetMapping("findParticulateEnergy")
@ApiOperation(value = "查看IMS DATA下气溶胶ENERGY数据", notes = "查看IMS DATA下气溶胶ENERGY数据")
public Result findParticulateEnergy(Integer sampleId){
return gardsSampleDataService.findParticulateEnergy(sampleId);
}
@GetMapping("findParticulateResolution")
@ApiOperation(value = "查看IMS DATA下气溶胶RESOLUTION数据", notes = "查看IMS DATA下气溶胶RESOLUTION数据")
public Result findParticulateResolution(Integer sampleId){
return gardsSampleDataService.findParticulateResolution(sampleId);
}
@GetMapping("findParticulateEfficiency")
@ApiOperation(value = "查看IMS DATA下气溶胶EFFICIENCY数据", notes = "查看IMS DATA下气溶胶EFFICIENCY数据")
public Result findParticulateEfficiency(Integer sampleId){
return gardsSampleDataService.findParticulateEfficiency(sampleId);
}
@GetMapping("findParticulateCertificate")
@ApiOperation(value = "查看IMS DATA下气溶胶CERTIFICATE数据", notes = "查看IMS DATA下气溶胶CERTIFICATE数据")
public Result findParticulateCertificate(Integer sampleId){
return gardsSampleCertService.findParticulateCertificate(sampleId);
}
}

View File

@ -0,0 +1,40 @@
package org.jeecg.modules.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName(value = "gards_calibration_pairs_orig")
public class GardsCalibrationPairsOrig implements Serializable {
@TableField(value = "SAMPLE_ID")
private Integer sampleId;
@TableField(value = "SAMPLE_TYPE")
private String sampleType;
@TableField(value = "CALTYPE")
private String caltype;
@TableField(value = "INPUT")
private String input;
@TableField(value = "IDCALPOINT")
private Integer idcalpoint;
@TableField(value = "XVALUE")
private Double xvalue;
@TableField(value = "YVALUE")
private Double yvalue;
@TableField(value = "UNCYVALUE")
private Double uncyvalue;
@TableField(value = "DECAY_MODE")
private String decayMode;
}

View File

@ -0,0 +1,56 @@
package org.jeecg.modules.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName(value = "gards_sample_aux")
public class GardsSampleAux implements Serializable {
@TableField(value = "SAMPLE_ID")
private Integer sampleId;
@TableField(value = "SAMPLE_REF_ID")
private String sampleRefId;
@TableField(value = "MEASUREMENT_ID")
private String measurementId;
@TableField(value = "BKGD_MEASUREMENT_ID")
private String bkgdMeasurementId;
@TableField(value = "GAS_BKGD_MEASUREMENT_ID")
private String gasBkgdMeasurementId;
@TableField(value = "SAMPLE_HEIGHT")
private Double sampleHeight;
@TableField(value = "SAMPLE_DIAMETER")
private Double sampleDiameter;
@TableField(value = "CALIBRATION_DTG")
private Date calibrationDtg;
@TableField(value = "MSG_ID")
private String msgId;
@TableField(value = "ARCHIVE_BOTTLE_ID")
private String archiveBottleId;
@TableField(value = "XE_VOLUME")
private Double xeVolume;
@TableField(value = "XE_VOLUME_UNCER")
private Double xeVolumeUncer;
@TableField(value = "XE_COLLECTION_YIED")
private Double xeCollectionYied;
@TableField(value = "XE_COLLECTION_YIED_UNCER")
private Double xeCollectionYiedUncer;
}

View File

@ -0,0 +1,26 @@
package org.jeecg.modules.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName(value = "gards_sample_cert")
public class GardsSampleCert implements Serializable {
@TableField(value = "SAMPLE_ID")
private Integer sampleId;
@TableField(value = "QUANTITY")
private Integer quantity;
@TableField(value = "ASSAY_DATE")
private Date assayDate;
@TableField(value = "UNIT")
private String unit;
}

View File

@ -0,0 +1,46 @@
package org.jeecg.modules.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName(value = "gards_sample_cert_line")
public class GardsSampleCertLine implements Serializable {
@TableField(value = "SAMPLE_ID")
private Integer sampleId;
@TableField(value = "NUCL_NAME")
private String nuclName;
@TableField(value = "HALFLIFE")
private String halflife;
@TableField(value = "ENERGY")
private Integer energy;
@TableField(value = "ACTIVITY")
private Integer activity;
@TableField(value = "ERROR")
private Integer error;
@TableField(value = "ABUNDANCE")
private Integer abundance;
@TableField(value = "B_ABUNDANCE")
private Integer bAbundance;
@TableField(value = "B_ENERGY")
private Integer bEnergy;
@TableField(value = "DECAY_MODE")
private String decayMode;
@TableField(value = "HALFLIFT_UNIT")
private String halfliftUnit;
}

View File

@ -66,13 +66,13 @@ public class GardsSampleData implements Serializable {
private Date acquisitionStop;
@TableField(value = "ACQUISITION_REAL_SEC")
private Integer acquisitionRealSec;
private Double acquisitionRealSec;
@TableField(value = "ACQUISITION_LIVE_SEC")
private Integer acquisitionLiveSec;
private Double acquisitionLiveSec;
@TableField(value = "QUANTITY")
private Integer quantity;
private Double quantity;
@TableField(value = "STATUS")
private String status;
@ -85,7 +85,4 @@ public class GardsSampleData implements Serializable {
@TableField(exist = false)
private String stationName;
@TableField(exist = false)
private String detectorName;
}

View File

@ -0,0 +1,50 @@
package org.jeecg.modules.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName(value = "sys_dict")
public class SysDict implements Serializable {
@TableField(value = "id")
private String id;
@TableField(value = "dict_name")
private String dictName;
@TableField(value = "dict_code")
private String dictCode;
@TableField(value = "description")
private String description;
@TableField(value = "del_flag")
private Integer delFlag;
@TableField(value = "create_by")
private String createBy;
@TableField(value = "create_time")
private Date createTime;
@TableField(value = "update_by")
private String updateBy;
@TableField(value = "update_time")
private Date updateTime;
@TableField(value = "type")
private Integer type;
@TableField(value = "tenant_id")
private Integer tenantId;
@TableField(value = "low_app_id")
private String lowAppId;
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.entity.GardsCalibrationPairsOrig;
public interface GardsCalibrationPairsOrigMapper extends BaseMapper<GardsCalibrationPairsOrig> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.entity.GardsSampleAux;
public interface GardsSampleAuxMapper extends BaseMapper<GardsSampleAux> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.entity.GardsSampleCertLine;
public interface GardsSampleCertLineMapper extends BaseMapper<GardsSampleCertLine> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.entity.GardsSampleCert;
public interface GardsSampleCertMapper extends BaseMapper<GardsSampleCert> {
}

View File

@ -0,0 +1,7 @@
package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.entity.SysDict;
public interface SysDictMapper extends BaseMapper<SysDict> {
}

View File

@ -4,9 +4,21 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsMetData;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
public interface IGardsMetDataService extends IService<GardsMetData> {
Result findMetPage(QueryRequest queryRequest, GardsMetData gardsMetData);
/**
* 分页查询气象数据信息
* @param queryRequest
* @param stationIds
* @param startTime
* @param endTime
* @return
*/
Result findMetPage(QueryRequest queryRequest, List<Integer> stationIds, Date startTime, Date endTime);
}

View File

@ -0,0 +1,11 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsSampleCert;
public interface IGardsSampleCertService extends IService<GardsSampleCert> {
Result findParticulateCertificate(Integer sampleId);
}

View File

@ -5,14 +5,50 @@ import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsSampleData;
import java.util.Date;
import java.util.List;
public interface IGardsSampleDataService extends IService<GardsSampleData> {
/**
* 分页查询颗粒物相关数据
* 分页查询气溶胶相关数据
* @param queryRequest
* @param gardsSampleData
* @param stationIds
* @param dataType
* @param spectralQualifie
* @param startTime
* @param endTime
* @return
*/
Result findParticulatePage(QueryRequest queryRequest, GardsSampleData gardsSampleData);
Result findParticulatePage(QueryRequest queryRequest, List<Integer> stationIds, String dataType, String spectralQualifie, Date startTime,Date endTime);
/**
* 查询谱数据详细信息
* @param sampleId
* @return
*/
Result findParticulateInfo(Integer sampleId);
/**
* 查询谱数据的能量数据
* @param sampleId
* @return
*/
Result findParticulateEnergy(Integer sampleId);
/**
* 查询
* @param sampleId
* @return
*/
Result findParticulateResolution(Integer sampleId);
/**
* 查询
* @param sampleId
* @return
*/
Result findParticulateEfficiency(Integer sampleId);
}

View File

@ -5,8 +5,19 @@ import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsSohData;
import java.util.Date;
import java.util.List;
public interface IGardsSohDataService extends IService<GardsSohData> {
Result findSohPage(QueryRequest queryRequest, GardsSohData gardsSohData);
/**
* 分页查询状态数据信息
* @param queryRequest
* @param stationIds
* @param startTime
* @param endTime
* @return
*/
Result findSohPage(QueryRequest queryRequest, List<Integer> stationIds, Date startTime, Date endTime);
}

View File

@ -0,0 +1,16 @@
package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.SysDict;
public interface ISysDictService extends IService<SysDict> {
/**
* 根据系统类型查询对应的台站信息
* @param menuName
* @return
*/
Result findList(String menuName);
}

View File

@ -2,15 +2,21 @@ package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.entity.GardsMetData;
import org.jeecg.modules.mapper.GardsMetDataMapper;
import org.jeecg.modules.service.IGardsMetDataService;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Service("gardsMetDataService")
@ -18,17 +24,35 @@ import java.util.Objects;
public class GardsMetDataServiceImpl extends ServiceImpl<GardsMetDataMapper, GardsMetData> implements IGardsMetDataService {
@Override
public Result findMetPage(QueryRequest queryRequest, GardsMetData gardsMetData) {
Result result = new Result();
Page<GardsMetData> page = new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize());
LambdaQueryWrapper<GardsMetData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Objects.nonNull(gardsMetData.getStationId()), GardsMetData::getStationId, gardsMetData.getStationId());
queryWrapper.ge(Objects.nonNull(gardsMetData.getStartTime()), GardsMetData::getStartTime, gardsMetData.getStartTime());
queryWrapper.le(Objects.nonNull(gardsMetData.getEndTime()), GardsMetData::getEndTime, gardsMetData.getEndTime());
Page<GardsMetData> metDataPage = this.baseMapper.selectPage(page, queryWrapper);
result.setSuccess(true);
result.setResult(metDataPage);
return result;
public Result findMetPage(QueryRequest queryRequest, List<Integer> stationIds, Date startTime, Date endTime) {
try {
Result result = new Result();
if (CollectionUtils.isEmpty(stationIds)){
result.error500("台站信息不能为空");
return result;
}
if (Objects.isNull(startTime)){
result.error500("开始时间不能为空");
return result;
}
if (Objects.isNull(endTime)){
result.error500("结束时间不能为空");
return result;
}
Date startDate = DateUtils.parseDate(DateUtils.formatDate(startTime, "yyyy-MM-dd") + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
Date endDate = DateUtils.parseDate(DateUtils.formatDate(endTime, "yyyy-MM-dd") + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
Page<GardsMetData> page = new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize());
LambdaQueryWrapper<GardsMetData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(GardsMetData::getStationId, stationIds);
queryWrapper.ge(GardsMetData::getStartTime, startDate);
queryWrapper.le(GardsMetData::getEndTime, endDate);
Page<GardsMetData> metDataPage = this.baseMapper.selectPage(page, queryWrapper);
result.setSuccess(true);
result.setResult(metDataPage);
return result;
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -0,0 +1,51 @@
package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsSampleCert;
import org.jeecg.modules.entity.GardsSampleCertLine;
import org.jeecg.modules.mapper.GardsSampleCertLineMapper;
import org.jeecg.modules.mapper.GardsSampleCertMapper;
import org.jeecg.modules.service.IGardsSampleCertService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Service("gardsSampleCertService")
@DS("ori")
public class GardsSampleCertServiceImpl extends ServiceImpl<GardsSampleCertMapper, GardsSampleCert> implements IGardsSampleCertService {
@Autowired
private GardsSampleCertLineMapper gardsSampleCertLineMapper;
@Override
public Result findParticulateCertificate(Integer sampleId) {
Result result = new Result();
Map<String, Object> map = new HashMap<>();
LambdaQueryWrapper<GardsSampleCert> certLQueryWrapper = new LambdaQueryWrapper<>();
certLQueryWrapper.eq(GardsSampleCert::getSampleId, sampleId);
GardsSampleCert gardsSampleCert = this.baseMapper.selectOne(certLQueryWrapper);
if (Objects.nonNull(gardsSampleCert)){
map.put("Total Source Activity", gardsSampleCert.getQuantity());
map.put("Assay Date", gardsSampleCert.getAssayDate());
map.put("Units of Activity", gardsSampleCert.getUnit());
}
LambdaQueryWrapper<GardsSampleCertLine> certLineQueryWrapper = new LambdaQueryWrapper<>();
certLineQueryWrapper.eq(GardsSampleCertLine::getSampleId, sampleId);
List<GardsSampleCertLine> sampleCertLines = gardsSampleCertLineMapper.selectList(certLineQueryWrapper);
if (CollectionUtils.isNotEmpty(sampleCertLines)){
map.put("table", sampleCertLines);
}
result.setSuccess(true);
result.setResult(map);
return result;
}
}

View File

@ -2,21 +2,31 @@ package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.entity.GardsCalibrationPairsOrig;
import org.jeecg.modules.entity.GardsSampleAux;
import org.jeecg.modules.entity.GardsSampleData;
import org.jeecg.modules.entity.SysDict;
import org.jeecg.modules.mapper.GardsCalibrationPairsOrigMapper;
import org.jeecg.modules.mapper.GardsSampleAuxMapper;
import org.jeecg.modules.mapper.GardsSampleDataMapper;
import org.jeecg.modules.mapper.SysDictMapper;
import org.jeecg.modules.service.IGardsSampleDataService;
import org.jeecg.modules.system.entity.GardsStations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
@Service("gardsSampleDataService")
@DS("ori")
@ -24,46 +34,202 @@ public class GardsSampleDataServiceImpl extends ServiceImpl<GardsSampleDataMappe
@Autowired
private RedisUtil redisUtil;
@Autowired
private GardsSampleAuxMapper gardsSampleAuxMapper;
@Autowired
private GardsCalibrationPairsOrigMapper gardsCalibrationPairsOrigMapper;
@Override
public Result findParticulatePage(QueryRequest queryRequest, GardsSampleData gardsSampleData) {
public Result findParticulatePage(QueryRequest queryRequest, List<Integer> stationIds, String dataType, String spectralQualifie, Date startTime,Date endTime) {
try {
Result result = new Result();
//获取redis中缓存的台站信息
Map<Integer, String> stationMap = (Map<Integer, String>)redisUtil.get("stationMap");
if (StringUtils.isBlank(dataType)) {
result.error500("数据类型不能为空");
return result;
}
if (Objects.isNull(startTime)){
result.error500("开始时间不能为空");
return result;
}
if (Objects.isNull(endTime)){
result.error500("结束时间不能为空");
return result;
}
if (CollectionUtils.isEmpty(stationIds)){
result.error500("台站信息不能为空");
return result;
}
Date startDate = DateUtils.parseDate(DateUtils.formatDate(startTime, "yyyy-MM-dd") + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
Date endDate = DateUtils.parseDate(DateUtils.formatDate(endTime, "yyyy-MM-dd") + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
//声明page
Page<GardsSampleData> page = new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize());
//声明Lambda 传递参数进行条件查询
LambdaQueryWrapper<GardsSampleData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(GardsSampleData::getDataType, dataType);
//数据分为全谱与过程谱则使用采集日期进行日期查询
if (StringUtils.isNotBlank(spectralQualifie)) {
queryWrapper.eq(GardsSampleData::getSpectralQualifie, spectralQualifie);
queryWrapper.ge(GardsSampleData::getCollectStart, startDate);
queryWrapper.le(GardsSampleData::getCollectStop, endDate);
}else {//数据不区分全谱与过程谱则使用
queryWrapper.ge(GardsSampleData::getAcquisitionStart, startDate);
queryWrapper.le(GardsSampleData::getAcquisitionStop, endDate);
}
queryWrapper.in(GardsSampleData::getStationId, stationIds);
//进行分页查询
Page<GardsSampleData> sampleDataPage = this.baseMapper.selectPage(page, queryWrapper);
sampleDataPage.getRecords().forEach(item->{
if (stationMap.containsKey(item.getStationId().toString()) && CollectionUtils.isNotEmpty(stationMap)){
String stationName = stationMap.get(item.getStationId().toString());
item.setStationName(stationName);
}
});
result.setSuccess(true);
result.setResult(sampleDataPage);
return result;
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
@Override
public Result findParticulateInfo(Integer sampleId) {
Result result = new Result();
Map<String, Object> map = new HashMap<>();
//获取redis中缓存的台站信息
Map<Integer, String> stationMap = (Map<Integer, String>)redisUtil.get("stationMap");
//获取redis中缓存的探测器信息
Map<Integer, String> detectorsMap = (Map<Integer, String>)redisUtil.get("detectorsMap");
if (StringUtils.isBlank(gardsSampleData.getSampleType())){
result.error500("系统类型不能为空");
return result;
//根据sample_id查询sample_data内容
LambdaQueryWrapper<GardsSampleData> sampleDataQueryWrapper = new LambdaQueryWrapper<>();
sampleDataQueryWrapper.eq(GardsSampleData::getSampleId, sampleId);
GardsSampleData gardsSampleData = this.baseMapper.selectOne(sampleDataQueryWrapper);
if (Objects.nonNull(gardsSampleData) && CollectionUtils.isNotEmpty(stationMap)){
String stationName = stationMap.get(gardsSampleData.getStationId().toString());
gardsSampleData.setStationName(stationName);
}
if (StringUtils.isBlank(gardsSampleData.getDataType())) {
result.error500("数据类型不能为空");
return result;
//根据sample_id查询sample_aux内容
LambdaQueryWrapper<GardsSampleAux> sampleAuxQueryWrapper = new LambdaQueryWrapper<>();
sampleAuxQueryWrapper.eq(GardsSampleAux::getSampleId, sampleId);
GardsSampleAux gardsSampleAux = gardsSampleAuxMapper.selectOne(sampleAuxQueryWrapper);
if (Objects.nonNull(gardsSampleData) && Objects.nonNull(gardsSampleAux)){
//封装数据内容
map.put("Site Code", gardsSampleData.getStationName());
map.put("Detector Code",gardsSampleData.getSiteDetCode());
map.put("System Type",gardsSampleData.getSampleType());
map.put("Sample Geometry",gardsSampleData.getGeometry());
map.put("Spectrum Qualifier",gardsSampleData.getSpectralQualifie());
map.put("Sample Reference Identification", gardsSampleAux.getSampleRefId());
map.put("Measurement Identification", gardsSampleAux.getMeasurementId());
map.put("Detector Background Measurement Identification", gardsSampleAux.getBkgdMeasurementId());
map.put("Gas Background Measurement Identification", gardsSampleAux.getGasBkgdMeasurementId());
map.put("Transmit Time", gardsSampleData.getTransmitDtg());
map.put("Acquisition Time", gardsSampleData.getAcquisitionStart());
map.put("Acquisition Real Time", gardsSampleData.getAcquisitionRealSec());
map.put("Acquisition Live Time", gardsSampleData.getAcquisitionLiveSec());
map.put("Date of Last Calibration", gardsSampleAux.getCalibrationDtg());
}
//声明page
Page<GardsSampleData> page = new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize());
//声明Lambda 传递参数进行条件查询
LambdaQueryWrapper<GardsSampleData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(GardsSampleData::getSampleType, gardsSampleData.getSampleType());
queryWrapper.eq(GardsSampleData::getDataType, gardsSampleData.getDataType());
queryWrapper.eq(Objects.nonNull(gardsSampleData.getStationId()), GardsSampleData::getStationId, gardsSampleData.getStationId());
queryWrapper.ge(Objects.nonNull(gardsSampleData.getAcquisitionStart()), GardsSampleData::getAcquisitionStart, gardsSampleData.getAcquisitionStart());
queryWrapper.le(Objects.nonNull(gardsSampleData.getAcquisitionStop()), GardsSampleData::getAcquisitionStop, gardsSampleData.getAcquisitionStop());
//进行分页查询
Page<GardsSampleData> sampleDataPage = this.baseMapper.selectPage(page, queryWrapper);
sampleDataPage.getRecords().forEach(item->{
if (stationMap.containsKey(item.getStationId().toString())){
String stationName = stationMap.get(item.getStationId().toString());
item.setStationName(stationName);
}
if (detectorsMap.containsKey(item.getDetectorId().toString())){
String detectorName = detectorsMap.get(item.getDetectorId().toString());
item.setDetectorName(detectorName);
}
});
result.setSuccess(true);
result.setResult(sampleDataPage);
result.setResult(map);
return result;
}
@Override
public Result findParticulateEnergy(Integer sampleId) {
Result result = new Result();
//map 封装三个数组
Map<String, List<Double>> map = new HashMap<>();
//封装存储 g_energy
List<Double> GEnergyList = new LinkedList<>();
//封装存储 Centroid channel
List<Double> centroidChannelList = new LinkedList<>();
//封装存储 Uncertainty
List<Double> uncertaintyList = new LinkedList<>();
LambdaQueryWrapper<GardsCalibrationPairsOrig> calibrationPairsOrigQueryWrapper = new LambdaQueryWrapper<>();
calibrationPairsOrigQueryWrapper.eq(GardsCalibrationPairsOrig::getSampleId, sampleId);
calibrationPairsOrigQueryWrapper.eq(GardsCalibrationPairsOrig::getCaltype, "energy");
List<GardsCalibrationPairsOrig> gardsCalibrationPairsOrigs = gardsCalibrationPairsOrigMapper.selectList(calibrationPairsOrigQueryWrapper);
if (CollectionUtils.isNotEmpty(gardsCalibrationPairsOrigs)){
for (GardsCalibrationPairsOrig orig:gardsCalibrationPairsOrigs) {
// Xvalue 对应 centroid channel
centroidChannelList.add(orig.getXvalue());
// Yvalue 对应 g_energy
GEnergyList.add(orig.getYvalue());
// Uncyvalue 对应 Uncertainty
uncertaintyList.add(orig.getUncyvalue());
}
}
map.put("G_Energy", GEnergyList);
map.put("Centroid channel", centroidChannelList);
map.put("Uncertainty", uncertaintyList);
result.setSuccess(true);
result.setResult(map);
return result;
}
@Override
public Result findParticulateResolution(Integer sampleId) {
Result result = new Result();
//map 封装三个数组
Map<String, List<Double>> map = new HashMap<>();
//封装存储 energy
List<Double> energyList = new LinkedList<>();
//封装存储 efficiency
List<Double> efficiencyList = new LinkedList<>();
//封装存储 Uncertainty
List<Double> uncertaintyList = new LinkedList<>();
LambdaQueryWrapper<GardsCalibrationPairsOrig> calibrationPairsOrigQueryWrapper = new LambdaQueryWrapper<>();
calibrationPairsOrigQueryWrapper.eq(GardsCalibrationPairsOrig::getSampleId, sampleId);
calibrationPairsOrigQueryWrapper.eq(GardsCalibrationPairsOrig::getCaltype, "efficiency");
List<GardsCalibrationPairsOrig> gardsCalibrationPairsOrigs = gardsCalibrationPairsOrigMapper.selectList(calibrationPairsOrigQueryWrapper);
if (CollectionUtils.isNotEmpty(gardsCalibrationPairsOrigs)){
for (GardsCalibrationPairsOrig orig:gardsCalibrationPairsOrigs) {
// Xvalue 对应 energy
energyList.add(orig.getXvalue());
// YValue 对应 efficiency
efficiencyList.add(orig.getYvalue());
// UncyValue 对应 Uncertainty
uncertaintyList.add(orig.getUncyvalue());
}
}
map.put("energy", energyList);
map.put("efficiency", efficiencyList);
map.put("Uncertainty", uncertaintyList);
result.setSuccess(true);
result.setResult(map);
return result;
}
@Override
public Result findParticulateEfficiency(Integer sampleId) {
Result result = new Result();
//map 封装三个数组
Map<String, List<Double>> map = new HashMap<>();
//封装存储 g_energy
List<Double> GEnergyList = new LinkedList<>();
//封装存储 FWHM
List<Double> FWHMList = new LinkedList<>();
//封装存储 Uncertainty
List<Double> uncertaintyList = new LinkedList<>();
LambdaQueryWrapper<GardsCalibrationPairsOrig> calibrationPairsOrigQueryWrapper = new LambdaQueryWrapper<>();
calibrationPairsOrigQueryWrapper.eq(GardsCalibrationPairsOrig::getSampleId, sampleId);
calibrationPairsOrigQueryWrapper.eq(GardsCalibrationPairsOrig::getCaltype, "Resolution");
List<GardsCalibrationPairsOrig> gardsCalibrationPairsOrigs = gardsCalibrationPairsOrigMapper.selectList(calibrationPairsOrigQueryWrapper);
if (CollectionUtils.isNotEmpty(gardsCalibrationPairsOrigs)){
for (GardsCalibrationPairsOrig orig:gardsCalibrationPairsOrigs) {
// Xvalue 对应 energy
GEnergyList.add(orig.getXvalue());
// YValue 对应 efficiency
FWHMList.add(orig.getYvalue());
// UncyValue 对应 Uncertainty
uncertaintyList.add(orig.getUncyvalue());
}
}
map.put("g_energy", GEnergyList);
map.put("FWHM", FWHMList);
map.put("Uncertainty", uncertaintyList);
result.setSuccess(true);
result.setResult(map);
return result;
}

View File

@ -2,11 +2,13 @@ package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.entity.GardsSohData;
import org.jeecg.modules.mapper.GardsSohDataMapper;
@ -14,6 +16,9 @@ import org.jeecg.modules.service.IGardsSohDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -25,29 +30,43 @@ public class GardsSohDataServiceImpl extends ServiceImpl<GardsSohDataMapper, Gar
private RedisUtil redisUtil;
@Override
public Result findSohPage(QueryRequest queryRequest, GardsSohData gardsSohData) {
Result result = new Result();
//获取redis中缓存的台站信息
Map<Integer, String> stationMap = (Map<Integer, String>)redisUtil.get("stationMap");
//获取redis中缓存的探测器信息
Map<Integer, String> detectorsMap = (Map<Integer, String>)redisUtil.get("detectorsMap");
Page<GardsSohData> page = new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize());
LambdaQueryWrapper<GardsSohData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Objects.nonNull(gardsSohData.getStationId()), GardsSohData::getStationId, gardsSohData.getStationId());
Page<GardsSohData> sohDataPage = this.baseMapper.selectPage(page, queryWrapper);
sohDataPage.getRecords().forEach(item->{
if (Objects.nonNull(item.getStationId()) && stationMap.containsKey(item.getStationId().toString())){
String stationName = stationMap.get(item.getStationId().toString());
item.setStationName(stationName);
public Result findSohPage(QueryRequest queryRequest, List<Integer> stationIds, Date startTime, Date endTime) {
try {
Result result = new Result();
if (CollectionUtils.isEmpty(stationIds)){
result.error500("台站信息不能为空");
return result;
}
if (Objects.nonNull(item.getDetectorId()) && detectorsMap.containsKey(item.getDetectorId().toString())){
String detectorName = detectorsMap.get(item.getDetectorId().toString());
item.setDetectorName(detectorName);
if (Objects.isNull(startTime)){
result.error500("开始时间不能为空");
return result;
}
});
result.setSuccess(true);
result.setResult(sohDataPage);
return result;
if (Objects.isNull(endTime)){
result.error500("结束时间不能为空");
return result;
}
Date startDate = DateUtils.parseDate(DateUtils.formatDate(startTime, "yyyy-MM-dd") + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
Date endDate = DateUtils.parseDate(DateUtils.formatDate(endTime, "yyyy-MM-dd") + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
//获取redis中缓存的探测器信息
Map<Integer, String> detectorsMap = (Map<Integer, String>)redisUtil.get("detectorsMap");
Page<GardsSohData> page = new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize());
LambdaQueryWrapper<GardsSohData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(GardsSohData::getStationId, stationIds);
queryWrapper.ge(GardsSohData::getStartTime, startDate);
queryWrapper.le(GardsSohData::getStartTime, endDate);
Page<GardsSohData> sohDataPage = this.baseMapper.selectPage(page, queryWrapper);
sohDataPage.getRecords().forEach(item->{
if (Objects.nonNull(item.getDetectorId()) && detectorsMap.containsKey(item.getDetectorId().toString())){
String detectorName = detectorsMap.get(item.getDetectorId().toString());
item.setDetectorName(detectorName);
}
});
result.setSuccess(true);
result.setResult(sohDataPage);
return result;
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -0,0 +1,63 @@
package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.entity.SysDict;
import org.jeecg.modules.mapper.SysDictMapper;
import org.jeecg.modules.service.ISysDictService;
import org.jeecg.modules.system.entity.GardsStations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service("sysDictService")
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements ISysDictService {
@Autowired
private RedisUtil redisUtil;
@Autowired
private SysDictMapper sysDictMapper;
@Override
public Result findList(String menuName) {
Result result = new Result();
List<GardsStations> gardsStationsList = new LinkedList<>();
//获取台站信息
HashMap<String, GardsStations> stationInfoMap = (HashMap<String, GardsStations>) redisUtil.get("stationInfoMap");
List<GardsStations> stationsList = stationInfoMap.values().stream().collect(Collectors.toList());
//如果传递的菜单名称不为空 则需要过滤出所需的台站信息
if (StringUtils.isNotBlank(menuName)){
//根据菜单名称查询出数据字典中对应的内容
LambdaQueryWrapper<SysDict> dictQueryWrapper = new LambdaQueryWrapper<>();
dictQueryWrapper.eq(SysDict::getDictName, menuName);
SysDict sysDict = sysDictMapper.selectOne(dictQueryWrapper);
//如果字典内容不为空
if (Objects.nonNull(sysDict)){
//获取当前字典对应的code数据
String dictCode = sysDict.getDictCode();
if (StringUtils.isNotBlank(dictCode)){
//根据英文,切割台站类型信息
List<String> types = Arrays.asList(dictCode.split(StringPool.COMMA));
//遍历过滤出和类型匹配的台站信息 存入新的数据集合中
for (String type:types) {
gardsStationsList.addAll(stationsList.stream().filter(item-> StringUtils.isNotBlank(item.getType()) && item.getType().equals(type)).collect(Collectors.toList()));
}
}
}else {
gardsStationsList.addAll(stationsList);
}
}else {
gardsStationsList.addAll(stationsList);
}
result.setSuccess(true);
result.setResult(gardsStationsList);
return result;
}
}

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-server-cloud</artifactId>
<version>3.5.1</version>
</parent>
<artifactId>jeecg-log-manage-start</artifactId>
<dependencies>
<!-- 引入jeecg-boot-starter-cloud依赖 -->
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-starter-cloud</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-module-log-manage</artifactId>
<version>3.5.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,47 @@
package org.jeecg;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableScheduling;
import java.net.InetAddress;
import java.net.UnknownHostException;
@Slf4j
@SpringBootApplication
@EnableFeignClients(basePackages = {"org.jeecg"})
@EnableScheduling
public class JeecgLogManageApplication extends SpringBootServletInitializer implements CommandLineRunner {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(JeecgLogManageApplication.class);
}
public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext application = SpringApplication.run(JeecgLogManageApplication.class, args);
Environment env = application.getEnvironment();
String ip = InetAddress.getLocalHost().getHostAddress();
String port = env.getProperty("server.port");
String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path"));
log.info("\n----------------------------------------------------------\n\t" +
"Application Jeecg-Boot is running! Access URLs:\n\t" +
"Local: \t\thttp://localhost:" + port + path + "/doc.html\n" +
"External: \thttp://" + ip + ":" + port + path + "/doc.html\n" +
"Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n" +
"----------------------------------------------------------");
}
@Override
public void run(String... args) throws Exception {
}
}

View File

@ -0,0 +1,18 @@
server:
port: 7005
spring:
application:
name: jeecg-log-manage
cloud:
nacos:
config:
server-addr: @config.server-addr@
group: @config.group@
namespace: @config.namespace@
discovery:
server-addr: ${spring.cloud.nacos.config.server-addr}
config:
import:
- optional:nacos:jeecg.yaml
- optional:nacos:jeecg-@profile.name@.yaml

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 -->
<property name="LOG_HOME" value="../logs" />
<!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />-->
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory>
<maxFileSize>10MB</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
</encoder>
</appender>
<!-- 生成 error html格式日志开始 -->
<appender name="HTML" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!--设置日志级别,过滤掉info日志,只输入error日志-->
<level>ERROR</level>
</filter>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%p%d%msg%M%F{32}%L</pattern>
</layout>
</encoder>
<file>${LOG_HOME}/error-log.html</file>
</appender>
<!-- 生成 error html格式日志结束 -->
<!-- 每天生成一个html格式的日志开始 -->
<appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.html</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory>
<MaxFileSize>10MB</MaxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%p%d%msg%M%F{32}%L</pattern>
</layout>
</encoder>
</appender>
<!-- 每天生成一个html格式的日志结束 -->
<!--myibatis log configure -->
<logger name="com.apache.ibatis" level="TRACE" />
<logger name="java.sql.Connection" level="DEBUG" />
<logger name="java.sql.Statement" level="DEBUG" />
<logger name="java.sql.PreparedStatement" level="DEBUG" />
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="HTML" />
<appender-ref ref="FILE_HTML" />
</root>
</configuration>

View File

@ -36,11 +36,6 @@
</exclusion>
</exclusions>
</dependency>
<!-- jeecg-system-log-manage依赖 -->
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-module-log-manage</artifactId>
</dependency>
<!-- feign 熔断限流、分布式锁、xxljob示例
<dependency>
<groupId>org.jeecgframework.boot</groupId>

View File

@ -23,6 +23,7 @@
<module>jeecg-visual</module>
<module>jeecg-station-operation-start</module>
<module>jeecg-web-statistics-start</module>
<module>jeecg-log-manage-start</module>
</modules>
</project>

View File

@ -81,7 +81,7 @@
<module>jeecg-module-log-manage</module>
<module>jeecg-module-station-operation</module>
<module>jeecg-module-web-statistics</module>
</modules>
</modules>
<repositories>
<repository>