1 files modified
21 files added
| | |
| | | <module>skjcmanager-sm</module> |
| | | <module>skjcmanager-alerts</module> |
| | | <module>skjcmanager-xxljob</module> |
| | | <module>skjcmanager-nky</module> |
| | | </modules> |
| | | |
| | | <dependencies> |
| New file |
| | |
| | | <?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"> |
| | | <parent> |
| | | <artifactId>skjcmanager-service</artifactId> |
| | | <groupId>cn.gistack</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <artifactId>skjcmanager-nky</artifactId> |
| | | <version>${bladex.project.version}</version> |
| | | <name>${project.artifactId}</name> |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>blade-core-boot</artifactId> |
| | | </dependency> |
| | | <!--开启多数据源--> |
| | | <dependency> |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>blade-core-auto</artifactId> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>com.spotify</groupId> |
| | | <artifactId>dockerfile-maven-plugin</artifactId> |
| | | <configuration> |
| | | <username>${docker.username}</username> |
| | | <password>${docker.password}</password> |
| | | <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository> |
| | | <tag>${project.version}</tag> |
| | | <useMavenSettingsForAuth>true</useMavenSettingsForAuth> |
| | | <buildArgs> |
| | | <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> |
| | | </buildArgs> |
| | | <skip>false</skip> |
| | | </configuration> |
| | | </plugin> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-antrun-plugin</artifactId> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | </project> |
| New file |
| | |
| | | package cn.gistack.nky; |
| | | |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springblade.core.cloud.client.BladeCloudApplication; |
| | | import org.springblade.core.launch.BladeApplication; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.boot.web.client.RestTemplateBuilder; |
| | | import org.springframework.cloud.openfeign.EnableFeignClients; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | @BladeCloudApplication |
| | | @EnableFeignClients({"cn.gistack"}) |
| | | @MapperScan({"org.springblade.**.mapper.**","cn.gistack.nky.**.mapper.**"}) |
| | | public class NkyApplication { |
| | | |
| | | public static void main(String[] args) { |
| | | BladeApplication.run("blade-nky", NkyApplication.class, args); |
| | | } |
| | | |
| | | @Bean |
| | | public RestTemplate restTemplate(RestTemplateBuilder builder){ |
| | | return builder.build(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.controller; |
| | | |
| | | import cn.gistack.nky.requestpojo.ArimaPredictReqPo; |
| | | import cn.gistack.nky.requestpojo.QueryReqPo; |
| | | import cn.gistack.nky.service.INkyService; |
| | | import cn.gistack.nky.service.IZtApiService; |
| | | import io.swagger.annotations.Api; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/28 17:45 |
| | | */ |
| | | @Slf4j |
| | | @Api(tags="测试") |
| | | @RestController |
| | | @RequestMapping("/test/test") |
| | | @AllArgsConstructor |
| | | public class TestController { |
| | | |
| | | private IZtApiService ztApiService; |
| | | private INkyService nkyService; |
| | | |
| | | @GetMapping(value = "/getTest") |
| | | public R getTest() { |
| | | return R.data(ztApiService.getWy()); |
| | | } |
| | | |
| | | @GetMapping(value = "/getTest2") |
| | | public R getTest2() { |
| | | ArimaPredictReqPo po = new ArimaPredictReqPo("42011640018","02","3",24); |
| | | nkyService.arimaPredict(po); |
| | | return R.data(null); |
| | | } |
| | | |
| | | @GetMapping(value = "/getTest3") |
| | | public R getTest3() { |
| | | return R.data(ztApiService.getWy()); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.launch; |
| | | |
| | | import cn.gistack.common.constant.LauncherConstant; |
| | | import org.springblade.core.auto.service.AutoService; |
| | | import org.springblade.core.launch.service.LauncherService; |
| | | import org.springblade.core.launch.utils.PropsUtil; |
| | | import org.springframework.boot.builder.SpringApplicationBuilder; |
| | | |
| | | import java.util.Properties; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: nacos配置 |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 10:51 |
| | | */ |
| | | @AutoService(LauncherService.class) |
| | | public class NkyLauncherServiceImpl implements LauncherService { |
| | | |
| | | @Override |
| | | public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) { |
| | | Properties props = System.getProperties(); |
| | | // 通用注册 |
| | | PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | |
| | | |
| | | PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile)); |
| | | //开启多数据源 |
| | | PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true"); |
| | | } |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.requestpojo; |
| | | |
| | | import cn.gistack.nky.resultpojo.DataResChildrenPo; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: arima预测请求参数 |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 11:02 |
| | | */ |
| | | @Data |
| | | public class ArimaPredictReqPo { |
| | | |
| | | private String damId; |
| | | |
| | | private String pointId; |
| | | |
| | | private String type; |
| | | |
| | | private int number; |
| | | |
| | | public ArimaPredictReqPo() {}; |
| | | |
| | | public ArimaPredictReqPo(String damId, String pointId, String type, int number) { |
| | | this.damId = damId; |
| | | this.pointId = pointId; |
| | | this.type = type; |
| | | this.number = number; |
| | | } |
| | | |
| | | public ArimaPredictReqPo (DataResChildrenPo pojo, String type, int number) { |
| | | this.damId = pojo.getRes_cd(); |
| | | this.pointId = pojo.getCd(); |
| | | this.type = type; |
| | | this.number = number; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.requestpojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: hst预测请求参数 |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 11:04 |
| | | */ |
| | | @Data |
| | | public class HstPredictReqPo { |
| | | |
| | | private String damId; |
| | | |
| | | private String pointId; |
| | | |
| | | private String type; |
| | | |
| | | private List<PredictWatersPo> predictWaters; |
| | | |
| | | public HstPredictReqPo(String damId, String pointId, String type, List<PredictWatersPo> predictWaters) { |
| | | this.damId = damId; |
| | | this.pointId = pointId; |
| | | this.type = type; |
| | | this.predictWaters = predictWaters; |
| | | } |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.requestpojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 11:05 |
| | | */ |
| | | @Data |
| | | public class PredictWatersPo { |
| | | |
| | | private String time; |
| | | |
| | | private Double value; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.requestpojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: 查询结果请求参数 |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 11:07 |
| | | */ |
| | | @Data |
| | | public class QueryReqPo { |
| | | |
| | | /** |
| | | * 第几页 |
| | | */ |
| | | private int pageNo; |
| | | /** |
| | | * 每页数量 |
| | | */ |
| | | private int pageSize; |
| | | /** |
| | | * 开始记录No |
| | | */ |
| | | private int startNo; |
| | | /** |
| | | * 大坝id |
| | | */ |
| | | private int damId; |
| | | /** |
| | | * 测点id |
| | | */ |
| | | private int pointId; |
| | | /** |
| | | * 监测量类型 |
| | | */ |
| | | private int type; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.resultpojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 9:42 |
| | | */ |
| | | @Data |
| | | public class DataBigResultPojo { |
| | | |
| | | private int totalRecords; |
| | | private int offset; |
| | | private int pageNo; |
| | | private int totalPages; |
| | | private int pageSize; |
| | | private List<DataResPo> data; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.resultpojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 9:38 |
| | | */ |
| | | @Data |
| | | public class DataResChildrenPo { |
| | | |
| | | private String res_reg_code; |
| | | private String cd;// 测站编码 |
| | | |
| | | private String tm; |
| | | private String res_cd; // 水库编码 |
| | | private String res_nm; // 水库名称 |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.resultpojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 9:37 |
| | | */ |
| | | @Data |
| | | public class DataResPo { |
| | | |
| | | private String rscd; |
| | | private String res_cd; |
| | | private String res_nm; |
| | | private String province_cd; |
| | | private String province_nm; |
| | | private String city_cd; |
| | | private String city_nm; |
| | | private String county_cd; |
| | | private String county_nm; |
| | | private String town_cd; |
| | | private String town_nm; |
| | | private String rv_name; |
| | | private String bas_guid; |
| | | private List<DataResChildrenPo> children; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.resultpojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: 中台返回resultpojo |
| | | * @USER: aix |
| | | * @DATE: 2023/7/28 17:21 |
| | | */ |
| | | @Data |
| | | public class ZtResultPo { |
| | | |
| | | private DataBigResultPojo data; |
| | | |
| | | private Integer code; |
| | | |
| | | private String msg; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.service; |
| | | |
| | | import cn.gistack.nky.requestpojo.ArimaPredictReqPo; |
| | | import cn.gistack.nky.requestpojo.HstPredictReqPo; |
| | | import cn.gistack.nky.requestpojo.QueryReqPo; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: 南科院接口service |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 10:17 |
| | | */ |
| | | public interface INkyService { |
| | | |
| | | /** |
| | | * arima 预测 |
| | | * 结果通过请通过查询接口查看 |
| | | */ |
| | | void arimaPredict(ArimaPredictReqPo po); |
| | | |
| | | /** |
| | | * hst预测 |
| | | * 结果通过请通过查询接口查看 |
| | | */ |
| | | void hstPredict(HstPredictReqPo po); |
| | | |
| | | /** |
| | | * arima预测查询结果 |
| | | * @param po 查询参数对象 |
| | | * @return |
| | | */ |
| | | Object arimaQuery(QueryReqPo po); |
| | | |
| | | /** |
| | | * hst预测查询结果 |
| | | * @return |
| | | */ |
| | | Object hstQuery(QueryReqPo po); |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.service; |
| | | |
| | | |
| | | import cn.gistack.nky.resultpojo.DataBigResultPojo; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: 中台远程调用 |
| | | * @USER: aix |
| | | * @DATE: 2023/7/28 9:44 |
| | | */ |
| | | public interface IZtApiService { |
| | | |
| | | /** |
| | | * 实时渗压监测数据 |
| | | * @return list集合 |
| | | */ |
| | | DataBigResultPojo getSljc(); |
| | | |
| | | /** |
| | | * 实时变形监测数据 |
| | | * @return list集合 |
| | | */ |
| | | DataBigResultPojo getWy(); |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.service; |
| | | |
| | | import cn.gistack.nky.requestpojo.ArimaPredictReqPo; |
| | | import cn.gistack.nky.requestpojo.HstPredictReqPo; |
| | | import cn.gistack.nky.requestpojo.QueryReqPo; |
| | | import com.alibaba.fastjson.JSON; |
| | | import org.springframework.http.*; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/31 14:19 |
| | | */ |
| | | @Service |
| | | public class NkyServiceImpl implements INkyService { |
| | | |
| | | // ARIMA预测接口URL |
| | | private static final String ARIMA_PREDICT = "https://sk.hubeishuiyi.cn/warnIp/predict/arimaPredict"; |
| | | // ARIMA预测结果接口 |
| | | private static final String ARIMA_QUERY = "https://sk.hubeishuiyi.cn/warnIp/predict/arimaQuery"; |
| | | // HST预测接口URL |
| | | private static final String HST_PREDICT = "https://sk.hubeishuiyi.cn/warnIp/predict/hstPredict"; |
| | | // HST预测结果接口 |
| | | private static final String HST_QUERY = "https://sk.hubeishuiyi.cn/warnIp/predict/hstQuery"; |
| | | |
| | | @Override |
| | | public void arimaPredict(ArimaPredictReqPo po) { |
| | | setPredict(ARIMA_PREDICT, JSON.toJSONString(po)); |
| | | } |
| | | |
| | | @Override |
| | | public void hstPredict(HstPredictReqPo po) { |
| | | setPredict(HST_PREDICT, JSON.toJSONString(po)); |
| | | } |
| | | |
| | | @Override |
| | | public Object arimaQuery(QueryReqPo po) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Object hstQuery(QueryReqPo po) { |
| | | return null; |
| | | } |
| | | |
| | | private void setPredict(String url, String jsonparams) { |
| | | // 声明一个header变量 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | // 设置为json格式 |
| | | MediaType mediaType = MediaType.parseMediaType("application/json;charset=utf-8"); |
| | | headers.setContentType(mediaType); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON.toString()); |
| | | |
| | | HttpEntity<String> httpEntity = new HttpEntity(jsonparams, headers); |
| | | |
| | | RestTemplate template = new RestTemplate(); |
| | | String resultStr = template.postForObject(url, httpEntity, String.class); |
| | | System.out.println(resultStr); |
| | | |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.nky.service; |
| | | |
| | | import cn.gistack.nky.resultpojo.DataBigResultPojo; |
| | | import cn.gistack.nky.resultpojo.ZtResultPo; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.util.LinkedHashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/28 17:16 |
| | | */ |
| | | @Service |
| | | public class ZtApiServiceImpl implements IZtApiService { |
| | | |
| | | /** |
| | | * 实时渗压监测 |
| | | */ |
| | | private static final String LASTEST_OSMOTIC_PRESSURE = "https://sk.hubeishuiyi.cn/services/1234567890ABCDEFGHIJKLMN/monitor/lastest_osmotic_pressure/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999"; |
| | | |
| | | private static final String WY_API = "https://sk.hubeishuiyi.cn/services/1234567890ABCDEFGHIJKLMN/monitor/wy/api?res_nm=&cd=&city_cd=&county_cd=&pageNo=1&pageSize=9999"; |
| | | |
| | | @Override |
| | | public DataBigResultPojo getSljc() { |
| | | Map<String, Object> params = new LinkedHashMap<>(); |
| | | return getData(LASTEST_OSMOTIC_PRESSURE, "get", params); |
| | | } |
| | | |
| | | @Override |
| | | public DataBigResultPojo getWy() { |
| | | Map<String, Object> params = new LinkedHashMap<>(); |
| | | return getData(WY_API, "get", params); |
| | | } |
| | | |
| | | private DataBigResultPojo getData(String url, String type, Map<String, Object> params) { |
| | | HttpMethod method; |
| | | if (type.toLowerCase().equals("get".toLowerCase())) { |
| | | method = HttpMethod.GET; |
| | | } else { |
| | | method = HttpMethod.POST; |
| | | } |
| | | // 声明一个header变量 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | // 设置apikey |
| | | headers.set("apikey","F1DBECD719108635189480CF60E6553ADB3109616426BD537F25A430DFC613B491A025C4A51E77FD08C6E5B7CBE05917A461286E7B6D69F1AB1B14F946149D2065B0C675F8FEDF4B9B05C1496881BC5A"); |
| | | |
| | | HttpEntity<String> httpEntity = new HttpEntity(null, headers); |
| | | |
| | | RestTemplate template = new RestTemplate(); |
| | | ResponseEntity<ZtResultPo> ztResultPojoResponseEntity = template.exchange(url, method,httpEntity, ZtResultPo.class,params); |
| | | if (ztResultPojoResponseEntity.getStatusCodeValue() == 200) { |
| | | return ztResultPojoResponseEntity.getBody().getData(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | #服务器端口 |
| | | server: |
| | | port: 8115 |
| | | |
| | | #数据源配置 |
| | | #spring: |
| | | # datasource: |
| | | # url: ${blade.datasource.dev.url} |
| | | # username: ${blade.datasource.dev.username} |
| | | # password: ${blade.datasource.dev.password} |
| | | |
| | | #多数据源配置 |
| | | spring: |
| | | #排除DruidDataSourceAutoConfigure |
| | | autoconfigure: |
| | | exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
| | | datasource: |
| | | dynamic: |
| | | #设置默认的数据源或者数据源组,默认值即为master |
| | | primary: master |
| | | datasource: |
| | | ## 业务默认数据源 |
| | | master: |
| | | url: ${blade.datasource.dev.url} |
| | | username: ${blade.datasource.dev.username} |
| | | password: ${blade.datasource.dev.password} |
| | | ##中台数据源 |
| | | zt: |
| | | url: ${blade.datasource.dev.zt.url} |
| | | username: ${blade.datasource.dev.zt.username} |
| | | password: ${blade.datasource.dev.zt.password} |
| | | |
| | | main: |
| | | allow-circular-references: true |
| | | |
| New file |
| | |
| | | #服务器端口 |
| | | server: |
| | | port: 8115 |
| | | |
| | | #数据源配置 |
| | | #spring: |
| | | # datasource: |
| | | # url: ${blade.datasource.prod.url} |
| | | # username: ${blade.datasource.prod.username} |
| | | # password: ${blade.datasource.prod.password} |
| | | |
| | | #多数据源配置 |
| | | spring: |
| | | #排除DruidDataSourceAutoConfigure |
| | | autoconfigure: |
| | | exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
| | | datasource: |
| | | dynamic: |
| | | #设置默认的数据源或者数据源组,默认值即为master |
| | | primary: master |
| | | datasource: |
| | | master: |
| | | url: ${blade.datasource.prod.url} |
| | | username: ${blade.datasource.prod.username} |
| | | password: ${blade.datasource.prod.password} |
| | | zt: |
| | | url: ${blade.datasource.prod.zt.url} |
| | | username: ${blade.datasource.prod.zt.username} |
| | | password: ${blade.datasource.prod.zt.password} |
| | | |
| | | main: |
| | | allow-circular-references: true |
| | | |
| New file |
| | |
| | | package cn.gistack.nky; |
| | | |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | |
| | | @SpringBootTest |
| | | class SkjcmanagerNkyApplicationTests { |
| | | |
| | | @Test |
| | | void contextLoads() { |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.updaterecord; |
| | | |
| | | import io.geekidea.updaterecord.api.entity.UpdateRecordColumnLog; |
| | | import io.geekidea.updaterecord.api.entity.UpdateRecordLog; |
| | | import io.geekidea.updaterecord.api.entity.UpdateRecordTableLog; |
| | | import io.geekidea.updaterecord.core.aop.UpdateRecordAopSupport; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.aspectj.lang.JoinPoint; |
| | | import org.aspectj.lang.annotation.AfterReturning; |
| | | import org.aspectj.lang.annotation.AfterThrowing; |
| | | import org.aspectj.lang.annotation.Aspect; |
| | | import org.aspectj.lang.annotation.Before; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/13 14:16 |
| | | */ |
| | | @Slf4j |
| | | @Aspect |
| | | @Component |
| | | public class UpdateRecordAop extends UpdateRecordAopSupport { |
| | | |
| | | /** |
| | | * 切点 |
| | | */ |
| | | private static final String POINTCUT = "@annotation(io.geekidea.updaterecord.annotation.UpdateRecord)"; |
| | | |
| | | /** |
| | | * 方法执行之前 |
| | | * |
| | | * @param joinPoint |
| | | * @throws Throwable |
| | | */ |
| | | @Before(POINTCUT) |
| | | @Override |
| | | protected void doBefore(JoinPoint joinPoint) throws Throwable { |
| | | super.doBeforeHandle(joinPoint); |
| | | } |
| | | |
| | | /** |
| | | * 方法正常执行并成功返回 |
| | | * |
| | | * @param joinPoint |
| | | * @param result |
| | | * @throws Throwable |
| | | */ |
| | | @AfterReturning(value = POINTCUT, returning = RESULT) |
| | | @Override |
| | | protected void doAfterReturning(JoinPoint joinPoint, Object result) throws Throwable { |
| | | super.doAfterReturningHandle(joinPoint, result); |
| | | } |
| | | |
| | | /** |
| | | * 异常处理 |
| | | * |
| | | * @param exception |
| | | * @throws Throwable |
| | | */ |
| | | @AfterThrowing(value = POINTCUT, throwing = EXCEPTION) |
| | | @Override |
| | | protected void doAfterThrowing(Throwable exception) throws Throwable { |
| | | super.doAfterThrowingHandle(exception); |
| | | } |
| | | |
| | | @Override |
| | | protected String getToken(HttpServletRequest request) { |
| | | return super.getToken(request); |
| | | } |
| | | |
| | | @Override |
| | | protected void handleUpdateRecord(UpdateRecordLog updateRecordLog, List<UpdateRecordTableLog> updateRecordTableLogs, List<UpdateRecordColumnLog> updateRecordColumnLogs) { |
| | | // 需自己完善当前登陆用户ID和用户名称,IP对应的区域,备注信息等 |
| | | updateRecordLog.setUserId(String.valueOf(AuthUtil.getUserId())); |
| | | updateRecordLog.setUserName(AuthUtil.getUserName()); |
| | | updateRecordLog.setArea(""); |
| | | updateRecordLog.setRemark("update..."); |
| | | } |
| | | |
| | | @Async |
| | | @Override |
| | | protected void save(UpdateRecordLog updateRecordLog, List<UpdateRecordTableLog> updateRecordTableLogs, List<UpdateRecordColumnLog> updateRecordColumnLogs) { |
| | | super.save(updateRecordLog, updateRecordTableLogs, updateRecordColumnLogs); |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.updaterecord; |
| | | |
| | | import io.geekidea.updaterecord.mybatis.UpdateRecordMybatisInterceptor; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/13 14:16 |
| | | */ |
| | | @Configuration |
| | | public class UpdateRecordConfig { |
| | | |
| | | @Bean |
| | | public UpdateRecordMybatisInterceptor updateRecordMybatisInterceptor(){ |
| | | return new UpdateRecordMybatisInterceptor(); |
| | | } |
| | | |
| | | } |