From f47cc7d86c431cbffb8f717d3356e234d63e7344 Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Wed, 20 Dec 2023 14:19:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AE=97=E6=B3=95=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../newalgorithm/RMpEmissionFeignClient.java | 21 ++++++ .../newalgorithm/RMpInfluenceFeignClient.java | 23 +++++++ .../fallback/rMpEmissionFallbackFactory.java | 33 ++++++++++ .../fallback/rMpInfluenceFallbackFactory.java | 33 ++++++++++ .../timer/tasks/RMpEmissionTaskRunner.java | 66 +++++++++++++++++++ .../timer/tasks/RMpInfluenceTaskRunner.java | 66 +++++++++++++++++++ ...pecialAnalysisIndexOverviewTaskRunner.java | 66 +++++++++++++++++++ 7 files changed, 308 insertions(+) create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpEmissionFeignClient.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpInfluenceFeignClient.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpEmissionFallbackFactory.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpInfluenceFallbackFactory.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpEmissionTaskRunner.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpInfluenceTaskRunner.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/specialAnalysisIndexOverviewTaskRunner.java diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpEmissionFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpEmissionFeignClient.java new file mode 100644 index 000000000..138d4c3fb --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpEmissionFeignClient.java @@ -0,0 +1,21 @@ +package com.njcn.prepare.harmonic.api.newalgorithm; + + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.fallback.rMpEmissionFallbackFactory; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient( + value = ServerInfo.PREPARE_BOOT, + path = "/rMpEmissionM", + fallbackFactory = rMpEmissionFallbackFactory.class +) +public interface RMpEmissionFeignClient { + + @PostMapping("rMpEmissionMHandler") + HttpResult rMpEmissionMHandler(@RequestBody LineParam jobParam); +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpInfluenceFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpInfluenceFeignClient.java new file mode 100644 index 000000000..2e1d85646 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RMpInfluenceFeignClient.java @@ -0,0 +1,23 @@ +package com.njcn.prepare.harmonic.api.newalgorithm; + + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.fallback.rMpInfluenceFallbackFactory; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient( + value = ServerInfo.PREPARE_BOOT, + path = "/rMpInfluenceM", + fallbackFactory = rMpInfluenceFallbackFactory.class +) +public interface RMpInfluenceFeignClient { + + @ApiOperation("影响特性(r_mp_emission_m表数据)") + @PostMapping("rMpInfluenceMHandler") + HttpResult rMpInfluenceMHandler(@RequestBody LineParam jobParam); +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpEmissionFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpEmissionFallbackFactory.java new file mode 100644 index 000000000..a654988e3 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpEmissionFallbackFactory.java @@ -0,0 +1,33 @@ +package com.njcn.prepare.harmonic.api.newalgorithm.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.RMpEmissionFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.utils.PrepareEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class rMpEmissionFallbackFactory implements FallbackFactory { + @Override + public RMpEmissionFeignClient create(Throwable throwable) { + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException)throwable.getCause(); + exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult()); + } + + Enum finalExceptionEnum = exceptionEnum; + return new RMpEmissionFeignClient() { + @Override + public HttpResult rMpEmissionMHandler(LineParam jobParam) { + log.error("{}异常,降级处理,异常为:{}", "发射特性: ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpInfluenceFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpInfluenceFallbackFactory.java new file mode 100644 index 000000000..62e9d8f3c --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/rMpInfluenceFallbackFactory.java @@ -0,0 +1,33 @@ +package com.njcn.prepare.harmonic.api.newalgorithm.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.RMpInfluenceFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.utils.PrepareEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class rMpInfluenceFallbackFactory implements FallbackFactory { + @Override + public RMpInfluenceFeignClient create(Throwable throwable) { + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException)throwable.getCause(); + exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult()); + } + + Enum finalExceptionEnum = exceptionEnum; + return new RMpInfluenceFeignClient() { + @Override + public HttpResult rMpInfluenceMHandler(LineParam jobParam) { + log.error("{}异常,降级处理,异常为:{}", "影响特性: ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpEmissionTaskRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpEmissionTaskRunner.java new file mode 100644 index 000000000..3d3ccd5a4 --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpEmissionTaskRunner.java @@ -0,0 +1,66 @@ +package com.njcn.system.timer.tasks; + +import cn.hutool.core.util.StrUtil; +import com.njcn.common.pojo.constant.BizParamConstant; +import com.njcn.prepare.harmonic.api.newalgorithm.RMpEmissionFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.system.timer.TimerTaskRunner; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Calendar; +import java.util.Objects; + +/** + * 类的介绍:发射特性定时任务 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/20 13:55 + */ +@Component +@RequiredArgsConstructor +@Slf4j +public class RMpEmissionTaskRunner implements TimerTaskRunner { + + private final RMpEmissionFeignClient rMpEmissionFeignClient; + + @Override + public void action() { + log.info(LocalDateTime.now()+"发射特性调度开始"); + LineParam lineParam = new LineParam(); + lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH)); + lineParam.setDataDate(this.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH)); + rMpEmissionFeignClient.rMpEmissionMHandler(lineParam); + } + + public String prepareTimeDeal(String command) { + if (StrUtil.isBlank(command)) { + log.error(LocalDateTime.now() + "xxl调度任务参数未设置"); + return null; + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + if (Objects.equals(BizParamConstant.STAT_BIZ_DAY, command)) { + calendar.add(Calendar.DAY_OF_MONTH, -1); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_MONTH, command)) { + calendar.set(Calendar.DAY_OF_MONTH, 1); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_QUARTER, command)) { + int nowMonth = calendar.get(Calendar.MONTH); + calendar.set(Calendar.MONTH, nowMonth - (nowMonth % 3)); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_YEAR, command)) { + calendar.set(Calendar.DAY_OF_YEAR, 1); + } + log.info("job调度时间:" + sdf.format(calendar.getTime())); + return sdf.format(calendar.getTime()); + } + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpInfluenceTaskRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpInfluenceTaskRunner.java new file mode 100644 index 000000000..0f05f1782 --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/RMpInfluenceTaskRunner.java @@ -0,0 +1,66 @@ +package com.njcn.system.timer.tasks; + +import cn.hutool.core.util.StrUtil; +import com.njcn.common.pojo.constant.BizParamConstant; +import com.njcn.prepare.harmonic.api.newalgorithm.RMpInfluenceFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.system.timer.TimerTaskRunner; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Calendar; +import java.util.Objects; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/20 14:12 + */ +@Component +@RequiredArgsConstructor +@Slf4j +public class RMpInfluenceTaskRunner implements TimerTaskRunner { + + private final RMpInfluenceFeignClient rMpInfluenceFeignClient; + + @Override + public void action() { + log.info(LocalDateTime.now()+"影响特性调度开始"); + LineParam lineParam = new LineParam(); + lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH)); + lineParam.setDataDate(this.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH)); + rMpInfluenceFeignClient.rMpInfluenceMHandler(lineParam); + } + + public String prepareTimeDeal(String command) { + if (StrUtil.isBlank(command)) { + log.error(LocalDateTime.now() + "xxl调度任务参数未设置"); + return null; + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + if (Objects.equals(BizParamConstant.STAT_BIZ_DAY, command)) { + calendar.add(Calendar.DAY_OF_MONTH, -1); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_MONTH, command)) { + calendar.set(Calendar.DAY_OF_MONTH, 1); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_QUARTER, command)) { + int nowMonth = calendar.get(Calendar.MONTH); + calendar.set(Calendar.MONTH, nowMonth - (nowMonth % 3)); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_YEAR, command)) { + calendar.set(Calendar.DAY_OF_YEAR, 1); + } + log.info("job调度时间:" + sdf.format(calendar.getTime())); + return sdf.format(calendar.getTime()); + } + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/specialAnalysisIndexOverviewTaskRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/specialAnalysisIndexOverviewTaskRunner.java new file mode 100644 index 000000000..bfa96cb3b --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/specialAnalysisIndexOverviewTaskRunner.java @@ -0,0 +1,66 @@ +package com.njcn.system.timer.tasks; + +import cn.hutool.core.util.StrUtil; +import com.njcn.common.pojo.constant.BizParamConstant; +import com.njcn.prepare.harmonic.api.specialanalysis.SpecialAnalysisFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.system.timer.TimerTaskRunner; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Calendar; +import java.util.Objects; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/20 14:15 + */ +@Component +@RequiredArgsConstructor +@Slf4j +public class specialAnalysisIndexOverviewTaskRunner implements TimerTaskRunner { + + private final SpecialAnalysisFeignClient specialAnalysisFeignClient; + + @Override + public void action() { + log.info(LocalDateTime.now()+"专项分析-指标总览开始执行"); + LineParam lineParam = new LineParam(); + lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH)); + lineParam.setDataDate(this.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH)); + specialAnalysisFeignClient.hanlder(lineParam); + } + + public String prepareTimeDeal(String command) { + if (StrUtil.isBlank(command)) { + log.error(LocalDateTime.now() + "xxl调度任务参数未设置"); + return null; + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + if (Objects.equals(BizParamConstant.STAT_BIZ_DAY, command)) { + calendar.add(Calendar.DAY_OF_MONTH, -1); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_MONTH, command)) { + calendar.set(Calendar.DAY_OF_MONTH, 1); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_QUARTER, command)) { + int nowMonth = calendar.get(Calendar.MONTH); + calendar.set(Calendar.MONTH, nowMonth - (nowMonth % 3)); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + } else if (Objects.equals(BizParamConstant.STAT_BIZ_YEAR, command)) { + calendar.set(Calendar.DAY_OF_YEAR, 1); + } + log.info("job调度时间:" + sdf.format(calendar.getTime())); + return sdf.format(calendar.getTime()); + } + +}