Browse Source

定时同步数据任务 定时开启

single_login_20240407
PoffyZhang 4 months ago
parent
commit
0092b82308
5 changed files with 112 additions and 43 deletions
  1. +2
    -1
      kqapi/src/main/java/com/ningdatech/kqapi/common/handler/GlobalResponseHandler.java
  2. +10
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/scheduler/controller/TaskController.java
  3. +100
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/scheduler/task/SynTask.java
  4. +0
    -6
      kqapi/src/main/java/com/ningdatech/kqapi/zzsfw/controller/NdKqZzsfwMenuController.java
  5. +0
    -36
      kqapi/src/main/java/com/ningdatech/kqapi/zzsfw/manage/MatterManage.java

+ 2
- 1
kqapi/src/main/java/com/ningdatech/kqapi/common/handler/GlobalResponseHandler.java View File

@@ -16,7 +16,8 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
* @Version 1.0
**/
@RestControllerAdvice(basePackages = {
"com.ningdatech.kqapi.zzsfw.controller"
"com.ningdatech.kqapi.zzsfw.controller",
"com.ningdatech.kqapi.scheduler.controller"
})
public class GlobalResponseHandler implements ResponseBodyAdvice<Object> {



+ 10
- 0
kqapi/src/main/java/com/ningdatech/kqapi/scheduler/controller/TaskController.java View File

@@ -3,6 +3,7 @@ package com.ningdatech.kqapi.scheduler.controller;

import com.ningdatech.kqapi.scheduler.manage.SynManage;
import com.ningdatech.kqapi.scheduler.task.RemoveMattersTask;
import com.ningdatech.kqapi.scheduler.task.SynTask;
import com.ningdatech.kqapi.zzsfw.entity.vo.MatterTopVO;
import com.ningdatech.kqapi.zzsfw.entity.vo.TreeVO;
import com.ningdatech.kqapi.zzsfw.manage.MatterManage;
@@ -35,6 +36,8 @@ import java.util.List;
public class TaskController {
private final RemoveMattersTask removeMattersTask;

private final SynTask synTask;

private final SynManage synManage;

@ApiOperation(value = "主动调删除数据", notes = "主动调删除数据")
@@ -48,4 +51,11 @@ public class TaskController {
public void synData() throws UnknownHostException {
synManage.synData();
}

@ApiOperation(value = "同步菜单链接数据", notes = "同步菜单链接数据")
@GetMapping("/syn")
public String synMenu() throws UnknownHostException {
synTask.synData();
return "同步成功";
}
}

+ 100
- 0
kqapi/src/main/java/com/ningdatech/kqapi/scheduler/task/SynTask.java View File

@@ -0,0 +1,100 @@
package com.ningdatech.kqapi.scheduler.task;

import cn.hutool.core.date.StopWatch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ningdatech.kqapi.common.enumeration.CommonEnum;
import com.ningdatech.kqapi.common.helper.MatterCacheHelper;
import com.ningdatech.kqapi.scheduler.contants.TaskContant;
import com.ningdatech.kqapi.zzsfw.entity.entity.NdKqZzsfwMattersDeduplicate;
import com.ningdatech.kqapi.zzsfw.entity.entity.NdKqZzsfwMenu;
import com.ningdatech.kqapi.zzsfw.manage.MatterManage;
import com.ningdatech.kqapi.zzsfw.service.IDscSxAdsShareItemQltQlsxCommonIDVKqService;
import com.ningdatech.kqapi.zzsfw.service.INdKqZzsfwMatterDeduplicateService;
import com.ningdatech.kqapi.zzsfw.service.INdKqZzsfwMenuService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;

/**
* @Classname SynTask
* @Description
* @Date 2024/1/4 9:04
* @Author PoffyZhang
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class SynTask {
@Value("${hostname}")
public String HOST;

@Value("${spring.profiles.active}")
public String active;

@Autowired
private MatterCacheHelper matterCacheHelper;

@Autowired
private MatterManage matterManage;

@Autowired
private INdKqZzsfwMatterDeduplicateService matterDeduplicateService;

@Autowired
private INdKqZzsfwMenuService menuService;

/**
* 每天
*/
@Scheduled(cron = "0 30 8 * * ?")
public void synData() throws UnknownHostException {
// if (!HOST.equals(InetAddress.getLocalHost().getHostName())) {
// log.info("定时器没开启或者host不对! {}:{}",
// HOST,InetAddress.getLocalHost().getHostName());
// return;
// }
// if(!TaskContant.PROD.equals(active)){
// log.info("非正式环境不用运行同步任务!");
// return;
// }

log.info("政务数据 ===================== 同步开始");
StopWatch stopWatch = new StopWatch();
stopWatch.start();

//1.处理 去重数据
if(matterCacheHelper.refreshAll()){
matterManage.removeAllDup();
List<NdKqZzsfwMattersDeduplicate> allDup = matterCacheHelper.all();
matterDeduplicateService.saveBatch(allDup);

//2. 事项
List<NdKqZzsfwMenu> menus = menuService.list();
for(NdKqZzsfwMenu menu : menus){
String url = matterCacheHelper.getUrl(menu.getItemName());
if(StringUtils.isBlank(url)){
menuService.update(Wrappers.lambdaUpdate(NdKqZzsfwMenu.class)
.eq(NdKqZzsfwMenu::getId,menu.getId())
.set(NdKqZzsfwMenu::getWebapplyurl,null)
.set(NdKqZzsfwMenu::getHasUrl, CommonEnum.NO.getCode()));
}else{
menuService.update(Wrappers.lambdaUpdate(NdKqZzsfwMenu.class)
.eq(NdKqZzsfwMenu::getId,menu.getId())
.set(NdKqZzsfwMenu::getWebapplyurl,url)
.set(NdKqZzsfwMenu::getHasUrl,CommonEnum.YES.getCode()));
}
}
}

stopWatch.stop();
log.info("政务数据 ===================== 同步总共耗时 :{} s",stopWatch.getTotalTimeSeconds());
}
}

+ 0
- 6
kqapi/src/main/java/com/ningdatech/kqapi/zzsfw/controller/NdKqZzsfwMenuController.java View File

@@ -69,10 +69,4 @@ public class NdKqZzsfwMenuController {
public String removeAllDup() {
return matterManage.removeAllDup();
}

@ApiOperation(value = "同步数据", notes = "同步数据")
@GetMapping("/syn")
public String synData() {
return matterManage.synData();
}
}

+ 0
- 36
kqapi/src/main/java/com/ningdatech/kqapi/zzsfw/manage/MatterManage.java View File

@@ -38,8 +38,6 @@ public class MatterManage {

private final INdKqZzsfwMatterDeduplicateService matterDeduplicateService;

private final MatterCacheHelper matterCacheHelper;

public List<TreeVO> getMatters() {
List<NdKqZzsfwMenu> matters = menuService.list(Wrappers.lambdaQuery(NdKqZzsfwMenu.class)
.isNotNull(NdKqZzsfwMenu::getWebapplyurl)
@@ -149,38 +147,4 @@ public class MatterManage {
matterDeduplicateService.remove(Wrappers.lambdaQuery(NdKqZzsfwMattersDeduplicate.class));
return "删除成功";
}

public String synData() {
log.info("政务数据 ===================== 同步开始");
StopWatch stopWatch = new StopWatch();
stopWatch.start();

//1.处理 去重数据
if(matterCacheHelper.refreshAll()){
removeAllDup();
List<NdKqZzsfwMattersDeduplicate> allDup = matterCacheHelper.all();
matterDeduplicateService.saveBatch(allDup);

//2. 事项
List<NdKqZzsfwMenu> menus = menuService.list();
for(NdKqZzsfwMenu menu : menus){
String url = matterCacheHelper.getUrl(menu.getItemName());
if(StringUtils.isBlank(url)){
menuService.update(Wrappers.lambdaUpdate(NdKqZzsfwMenu.class)
.eq(NdKqZzsfwMenu::getId,menu.getId())
.set(NdKqZzsfwMenu::getWebapplyurl,null)
.set(NdKqZzsfwMenu::getHasUrl,CommonEnum.NO.getCode()));
}else{
menuService.update(Wrappers.lambdaUpdate(NdKqZzsfwMenu.class)
.eq(NdKqZzsfwMenu::getId,menu.getId())
.set(NdKqZzsfwMenu::getWebapplyurl,url)
.set(NdKqZzsfwMenu::getHasUrl,CommonEnum.YES.getCode()));
}
}
}

stopWatch.stop();
log.info("政务数据 ===================== 同步总共耗时 :{} s",stopWatch.getTotalTimeSeconds());
return "同步成功 耗时 :" + stopWatch.getTotalTimeSeconds() + "s";
}
}

Loading…
Cancel
Save