package com.vci.web.service.impl;
|
|
import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
|
import com.vci.starter.web.enumpck.DataSecretEnum;
|
import com.vci.starter.web.exception.VciBaseException;
|
import com.vci.starter.web.properties.VciSessionProperties;
|
import com.vci.starter.web.util.ApplicationContextProvider;
|
import com.vci.web.properties.WebProperties;
|
import com.vci.web.service.*;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.Collections;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 初始化后的处理缓存的服务
|
* @author weidy
|
* @date 2022-1-12
|
*/
|
@Component
|
public class WebInitServiceImpl {
|
|
/**
|
* 业务类型
|
*/
|
@Autowired
|
private OsBtmServiceI btmService;
|
|
/**
|
* 链接类型
|
*/
|
@Autowired
|
private OsLinkTypeServiceI linkTypeService;
|
|
/**
|
* UI
|
*/
|
@Autowired
|
private UIEngineServiceI uiEngineService;
|
|
/**
|
* 菜单
|
*/
|
@Autowired
|
private ISmFunctionQueryService functionQueryService;
|
/**
|
* 密级服务
|
*/
|
@Autowired
|
private WebSecretServiceI webSecretService;
|
|
/**
|
* 状态的服务
|
*/
|
@Autowired
|
private OsStatusServiceI statusService;
|
|
/**
|
* 生命周期的服务
|
*/
|
@Autowired
|
private OsLifeCycleServiceI lifeCycleService;
|
|
/**
|
* 枚举的服务
|
*/
|
@Autowired
|
private OsEnumServiceI enumService;
|
|
/**
|
* 规则的服务
|
*/
|
@Autowired
|
private OsRevisionRuleServiceI revisionRuleService;
|
|
/**
|
* 属性的服务
|
*/
|
@Autowired
|
private OsAttributeServiceI attributeService;
|
|
/**
|
* 会话的信息
|
*/
|
@Autowired(required = false)
|
private VciSessionProperties sessionProperties;
|
|
/**
|
* web相关配置
|
*/
|
@Autowired
|
private WebProperties webProperties;
|
|
/**
|
* 业务类型的服务
|
*/
|
@Autowired
|
private WebBoServiceI boService;
|
|
/**
|
* 主服务是否在执行缓存
|
* @return true表示没有执行,执行中会抛出异常
|
*/
|
public boolean checkMainServerUnCache(){
|
//看看主服务在执行刷新缓存没有
|
boolean finishInitCache = false;
|
for(int i = 0 ; i < 10 ; i++){
|
if(boService.queryCountBySql("select count(*) from plcachetemp",new HashMap<>()) ==0){
|
finishInitCache = true;
|
break;
|
}else{
|
//说明主服务在执行
|
try {
|
Thread.sleep(1000);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
if(!finishInitCache){
|
throw new VciBaseException("暂时不能刷新,因为主服务还正在执行初始化缓存");
|
}
|
return finishInitCache;
|
}
|
|
/**
|
* 清除所有的缓存
|
*/
|
public void clearAllCache(){
|
Map<String, OsBaseServiceI> beans = ApplicationContextProvider.getApplicationContext().getBeansOfType(OsBaseServiceI.class);
|
if(!CollectionUtils.isEmpty(beans)){
|
beans.forEach((name,bean)->{
|
bean.clearCache();
|
});
|
}
|
}
|
|
/**
|
* 初始化服务端的缓存
|
* @throws Exception 查询的时候出现错误的时候
|
*/
|
public void initServerCache(){
|
long currentTime = System.currentTimeMillis();
|
System.out.println("开始启动状态池的缓存,时间有点长,请耐心等待");
|
statusService.selectAllStatusMap();
|
System.out.println("状态池的刷新完成,耗时" + (System.currentTimeMillis()-currentTime) + ",开始刷新生命周期");
|
currentTime = System.currentTimeMillis();
|
lifeCycleService.selectAllLifeCycleMap();
|
System.out.println("生命周期刷新完成,耗时" + (System.currentTimeMillis()-currentTime) + ",开始刷新枚举");
|
currentTime = System.currentTimeMillis();
|
enumService.selectAllEnumMap();
|
|
System.out.println(DataSecretEnum.NONE.getValue());
|
System.out.println("枚举刷新完成,耗时" + (System.currentTimeMillis()-currentTime) + ",开始刷新版本规则");
|
currentTime = System.currentTimeMillis();
|
revisionRuleService.selectAllRevisionMap();
|
System.out.println("版本规则刷新完成,耗时" + (System.currentTimeMillis()-currentTime) + ",开始刷新属性");
|
currentTime = System.currentTimeMillis();
|
attributeService.selectAllAttributeMap();
|
System.out.println("属性刷新完成,耗时" + (System.currentTimeMillis()-currentTime) + ",开始刷新业务类型");
|
currentTime = System.currentTimeMillis();
|
btmService.selectAllBtmMap();
|
System.out.println("业务类型刷新完成,耗时" + (System.currentTimeMillis()-currentTime) + ",开始刷新链接类型");
|
currentTime = System.currentTimeMillis();
|
linkTypeService.selectAllLinkMap();
|
System.out.println("链接类型刷新完成,耗时" + (System.currentTimeMillis()-currentTime) + ",开始刷新UI上下文");
|
currentTime = System.currentTimeMillis();
|
if(webProperties.isCacheUIOnInit()) {
|
uiEngineService.selectAllFormMap();
|
}
|
uiEngineService.selectAllActionMap();
|
System.out.println("UI上下文刷新完成,耗时" + (System.currentTimeMillis()-currentTime) );
|
currentTime = System.currentTimeMillis();
|
functionQueryService.selectAllFunctionMap();
|
System.out.println("菜单刷新,耗时" + (System.currentTimeMillis()-currentTime) );
|
}
|
}
|