diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogExceptionService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogExceptionService.java index 94a12fc..5ed631c 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogExceptionService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogExceptionService.java @@ -22,4 +22,10 @@ public interface ISysLogExceptionService { */ @ApiOperation(value = "系统异常日志复杂查询,分页,排序") ListPager querySysLogExceptionByPager(SysLogException sysLogException, Pager pager); + + /** + * 删除指定日期之后的日志 + * @param dateTime 日期 + */ + long deleteSysLogExceptionByDateTimeAfter(String dateTime); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogOperateService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogOperateService.java index 8303edd..a5c6321 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogOperateService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogOperateService.java @@ -81,4 +81,10 @@ public interface ISysLogOperateService { */ @ApiOperation(value = "查询最新的操作日志") List findNewSysLogOperate(Integer num); + + /** + * 删除指定日期之后的日志 + * @param dateTime 日期 + */ + long deleteSysLogOperateByDateTimeAfter(String dateTime); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java index 3e895f5..2920479 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java @@ -45,4 +45,10 @@ public interface ISysLogSystemService { */ @ApiOperation(value = "系统日志按id区间查询",notes = "系统日志按id区间查询") List findSysLogSystemByIdInterval(long min, long max); + + /** + * 删除指定日期之后的日志 + * @param dateTime 日期 + */ + long deleteSysLogSystemByDateTimeAfter(String dateTime); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogTaskTimeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogTaskTimeService.java index ae9e32d..8382b95 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogTaskTimeService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogTaskTimeService.java @@ -44,4 +44,10 @@ public interface ISysLogTaskTimeService { */ @ApiOperation(value = "定时任务日志分页复杂查询",notes = "定时任务日志分页复杂查询") ListPager querySysLogTaskTimeByPager(SysLogTaskTime sysLogTaskTime, Pager pager); + + /** + * 删除指定日期之后的日志 + * @param dateTime 日期 + */ + long deleteSysLogTaskTimeByDateTimeAfter(String dateTime); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTestingController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTestingController.java index d8197ff..5c00a51 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTestingController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoTestingController.java @@ -1,7 +1,15 @@ package cn.estsh.i3plus.core.apiservice.controller; -import cn.estsh.i3plus.core.api.iservice.busi.*; -import cn.estsh.i3plus.core.apiservice.controller.busi.ComputePi; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysDepartmentService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogSystemService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysOrganizeService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; +import cn.estsh.i3plus.core.api.iservice.busi.ISystemResourceService; +import cn.estsh.i3plus.core.api.iservice.busi.ITestService; import cn.estsh.i3plus.core.apiservice.controller.busi.PersonnelController; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.BaseBean; @@ -11,7 +19,18 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; -import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysDepartment; +import cn.estsh.i3plus.pojo.platform.bean.SysOrganize; +import cn.estsh.i3plus.pojo.platform.bean.SysPosition; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserInfoDepartment; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserPosition; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole; +import cn.estsh.i3plus.pojo.platform.bean.SysRole; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; import cn.estsh.impp.framework.boot.eureka.EurekaClientHealthCheck; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -30,13 +49,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - import javax.annotation.Resource; import javax.persistence.EntityManager; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -1144,3 +1163,87 @@ class TestThread implements Runnable { } } } +final class ComputePi { + + private ComputePi(){} + + /** + * 较著名的表示π的级数有莱布尼茨级数   π/4=1-1/3+1/5-1/7+1/9…… + * 以及威廉姆斯无穷乘积式   π/2=2*2/3*4/3*4/5*6/5*6/7*8/7*8/9…… + */ + + /** + * constants used in pi computation + */ + private static final BigDecimal FOUR = BigDecimal.valueOf(4); + + /** + * rounding mode to use during pi computation + */ + private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_EVEN; + + /** + * Compute the value of pi to the specified number of + * digits after the decimal point. The value is + * computed using Machin's formula: + *

+ * pi/4 = 4*arctan(1/5) - arctan(1/239) + *

+ * and a power series expansion of arctan(x) to + * sufficient precision. + */ + public static void main(String[] args) { + int digits = 1000; //精度10万位 + String pi = computePi(digits).toString(); + System.out.println("length: " + pi.length()); + System.out.println(pi); + + } + + public static BigDecimal computePi(int digits) { + int scale = digits + 5; + BigDecimal arctan1_5 = arctan(5, scale); + BigDecimal arctan1_239 = arctan(239, scale); + BigDecimal pi = arctan1_5.multiply(FOUR).subtract(arctan1_239).multiply(FOUR); + return pi.setScale(digits, BigDecimal.ROUND_HALF_UP); + } + + + /** + * Compute the value, in radians, of the arctangent of + * the inverse of the supplied integer to the specified + * number of digits after the decimal point. The value + * is computed using the power series expansion for the + * arc tangent: + *

+ * arctan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 + + * (x^9)/9 ... + */ + public static BigDecimal arctan(int inverseX, int scale) { + BigDecimal result, numer, term; + BigDecimal invX = BigDecimal.valueOf(inverseX); + BigDecimal invX2 = BigDecimal.valueOf(inverseX * inverseX); + + numer = BigDecimal.ONE.divide(invX, scale, ROUNDING_MODE); + + result = numer; + int i = 1; + do { + numer = + numer.divide(invX2, scale, ROUNDING_MODE); + int denom = 2 * i + 1; + term = + numer.divide(BigDecimal.valueOf(denom), + scale, ROUNDING_MODE); + if ((i % 2) != 0) { + result = result.subtract(term); + } else { + result = result.add(term); + } + i++; + } while (term.compareTo(BigDecimal.ZERO) != 0); + + return result; + } + +} \ No newline at end of file diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ComputePi.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ComputePi.java deleted file mode 100644 index 590f928..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ComputePi.java +++ /dev/null @@ -1,95 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.controller.busi; - -import java.math.BigDecimal; - -/** - * @Description : - * @Reference : - * @Author : yunhao - * @CreateDate : 2019-02-22 17:40 - * @Modify: - **/ -public final class ComputePi { - - private ComputePi(){} - - /** - * 较著名的表示π的级数有莱布尼茨级数   π/4=1-1/3+1/5-1/7+1/9…… - * 以及威廉姆斯无穷乘积式   π/2=2*2/3*4/3*4/5*6/5*6/7*8/7*8/9…… - */ - - /** - * constants used in pi computation - */ - private static final BigDecimal FOUR = BigDecimal.valueOf(4); - - /** - * rounding mode to use during pi computation - */ - private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_EVEN; - - /** - * Compute the value of pi to the specified number of - * digits after the decimal point. The value is - * computed using Machin's formula: - *

- * pi/4 = 4*arctan(1/5) - arctan(1/239) - *

- * and a power series expansion of arctan(x) to - * sufficient precision. - */ - public static void main(String[] args) { - int digits = 1000; //精度10万位 - String pi = computePi(digits).toString(); - System.out.println("length: " + pi.length()); - System.out.println(pi); - - } - - public static BigDecimal computePi(int digits) { - int scale = digits + 5; - BigDecimal arctan1_5 = arctan(5, scale); - BigDecimal arctan1_239 = arctan(239, scale); - BigDecimal pi = arctan1_5.multiply(FOUR).subtract(arctan1_239).multiply(FOUR); - return pi.setScale(digits, BigDecimal.ROUND_HALF_UP); - } - - - /** - * Compute the value, in radians, of the arctangent of - * the inverse of the supplied integer to the specified - * number of digits after the decimal point. The value - * is computed using the power series expansion for the - * arc tangent: - *

- * arctan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 + - * (x^9)/9 ... - */ - public static BigDecimal arctan(int inverseX, int scale) { - BigDecimal result, numer, term; - BigDecimal invX = BigDecimal.valueOf(inverseX); - BigDecimal invX2 = BigDecimal.valueOf(inverseX * inverseX); - - numer = BigDecimal.ONE.divide(invX, scale, ROUNDING_MODE); - - result = numer; - int i = 1; - do { - numer = - numer.divide(invX2, scale, ROUNDING_MODE); - int denom = 2 * i + 1; - term = - numer.divide(BigDecimal.valueOf(denom), - scale, ROUNDING_MODE); - if ((i % 2) != 0) { - result = result.subtract(term); - } else { - result = result.add(term); - } - i++; - } while (term.compareTo(BigDecimal.ZERO) != 0); - - return result; - } - -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreLogClearJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreLogClearJob.java new file mode 100644 index 0000000..5d1006c --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/CoreLogClearJob.java @@ -0,0 +1,69 @@ +package cn.estsh.i3plus.core.apiservice.schedulejob; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogExceptionService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogOperateService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogSystemService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysLogTaskTimeService; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob; +import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import java.util.Calendar; +import java.util.Date; + +/** + * @Description : + * @Reference : 日志清除 + * @Author : yunhao + * @CreateDate : 2019-07-04 19:13 + * @Modify: + **/ +public class CoreLogClearJob extends BaseImppScheduleJob { + public static final Logger LOGGER = LoggerFactory.getLogger(CoreLogClearJob.class); + + public CoreLogClearJob() { + super(CoreLogClearJob.class,"日志清除"); + } + + @Value("${impp.log.retention-time:-1}") + public Integer retentionTime; + + @Autowired + private ISysLogSystemService sysLogSystemService; + + @Autowired + private ISysLogExceptionService sysLogExceptionService; + + @Autowired + private ISysLogOperateService sysLogOperateService; + + @Autowired + private ISysLogTaskTimeService sysLogTaskTimeService; + + @Override + public void executeImppJob(JobExecutionContext context, ApplicationProperties applicationProperties) { + // 判断日志保留时间 -1 永久 + if(getJobParam() != null && Integer.parseInt(getJobParam()) != -1){ + // 计算保留日期 + String dateTime = TimeTool.pareDateToString("yyyy-MM-dd HH:mm:ss", + TimeTool.timeCalc(new Date(), Calendar.DAY_OF_MONTH, -retentionTime) + ); + long count; + count = sysLogSystemService.deleteSysLogSystemByDateTimeAfter(dateTime); + LOGGER.info("【日志清理】 清理系统日志 {} 条", count); + + count = sysLogExceptionService.deleteSysLogExceptionByDateTimeAfter(dateTime); + LOGGER.info("【日志清理】 清理异常日志 {} 条", count); + + count = sysLogOperateService.deleteSysLogOperateByDateTimeAfter(dateTime); + LOGGER.info("【日志清理】 清理操作日志 {} 条", count); + + count = sysLogTaskTimeService.deleteSysLogTaskTimeByDateTimeAfter(dateTime); + LOGGER.info("【日志清理】 清理定时任务日志 {} 条", count); + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogExceptionService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogExceptionService.java index c47da24..90a117b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogExceptionService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogExceptionService.java @@ -42,4 +42,9 @@ public class SysLogExceptionService implements ISysLogExceptionService { ,sysLogException.getAscOrDesc()),pager); } } + + @Override + public long deleteSysLogExceptionByDateTimeAfter(String dateTime) { + return sysLogExceptionRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime)); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogOperateService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogOperateService.java index 4effca9..64ef7b8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogOperateService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogOperateService.java @@ -99,4 +99,9 @@ public class SysLogOperateService implements ISysLogOperateService { sysLogOperate.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue()); return logOperateRDao.findByBsonPager(null,page,sysLogOperate.getOrderByParam(),sysLogOperate.getAscOrDesc()); } + + @Override + public long deleteSysLogOperateByDateTimeAfter(String dateTime) { + return logOperateRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime)); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java index 5f3dd0f..658c2f5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java @@ -111,4 +111,9 @@ public class SysLogSystemService implements ISysLogSystemService { public List findSysLogSystemByIdInterval(long min, long max) { return logSystemRDao.findByBson(CoreBsonPack.packBsonByInterval("_id",min,max)); } + + @Override + public long deleteSysLogSystemByDateTimeAfter(String dateTime) { + return logSystemRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime)); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogTaskTimeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogTaskTimeService.java index 696dab6..f8aca4e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogTaskTimeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogTaskTimeService.java @@ -60,4 +60,9 @@ public class SysLogTaskTimeService implements ISysLogTaskTimeService { ,sysLogTaskTime.getAscOrDesc()),pager); } } + + @Override + public long deleteSysLogTaskTimeByDateTimeAfter(String dateTime) { + return sysLogTaskTimeRDao.deleteByProperty(CoreBsonPack.packBsonByDateTimeAfter(dateTime)); + } }