项目初始化任务异步调用

This commit is contained in:
jiangs 2025-08-20 14:22:17 +08:00
parent 2df905c1b3
commit a18b715bba
5 changed files with 123 additions and 55 deletions

View File

@ -149,8 +149,6 @@ public class CommonUtil {
return xmAlarmdetailMapper.getXmAlarmdetail(yq, xmdh); return xmAlarmdetailMapper.getXmAlarmdetail(yq, xmdh);
} }
;
//服务器时间方法 //服务器时间方法
public Date getCurrentTime() { public Date getCurrentTime() {
@ -212,6 +210,15 @@ public class CommonUtil {
return comDictMapper.getComDictIdByName(zdlb, zdmc); return comDictMapper.getComDictIdByName(zdlb, zdmc);
} }
public List<ComDict> getComDictList(String zdlb){
List<ComDict> dictCacheList = getDictCache(zdlb);
if(dictCacheList != null){
return dictCacheList;
}else{
return comDictMapper.getComDictListByZdlb(zdlb);
}
}
public String getComOptValue(String yq, String xxdh) { public String getComOptValue(String yq, String xxdh) {
ComOpt comOpt = getOptCache(yq, xxdh); ComOpt comOpt = getOptCache(yq, xxdh);
if (comOpt != null) { if (comOpt != null) {
@ -226,6 +233,11 @@ public class CommonUtil {
} }
public void setDictCache(String zdlb, List<ComDict> dictDatas){
ComDictUtils.setDictCache(zdlb,dictDatas);
}
public List<LabReqdetail> getLabReqdetailList(String sqh) { public List<LabReqdetail> getLabReqdetailList(String sqh) {
return labReqdetailMapper.getLabReqdetailList(sqh); return labReqdetailMapper.getLabReqdetailList(sqh);
} }

View File

@ -33,8 +33,9 @@ public class SysJobServiceImpl implements ISysJobService {
/** /**
* 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据) * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据)
* 统一在applicationconfig类中进行异步调用
*/ */
@PostConstruct //@PostConstruct
public void init() throws SchedulerException, TaskException { public void init() throws SchedulerException, TaskException {
scheduler.clear(); scheduler.clear();
List<SysJob> jobList = jobMapper.selectJobAll(); List<SysJob> jobList = jobMapper.selectJobAll();

View File

@ -1,15 +1,26 @@
package com.czlis.system.config; package com.czlis.system.config;
import com.czlis.common.asyncmanager.AsyncManager;
import com.czlis.common.utils.ComDictUtils;
import com.czlis.interfaceCommon.mapper.ComDictMapper;
import com.czlis.quartz.service.impl.SysJobServiceImpl;
import com.czlis.system.service.impl.SysConfigServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import java.util.Arrays;
import java.util.List;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.TimerTask;
/** /**
* 程序注解配置 * 程序注解配置
* 项目初始化运行逻辑
* *
* @author admin * @author admin
*/ */
@ -18,7 +29,19 @@ import java.util.TimeZone;
@EnableAspectJAutoProxy(exposeProxy = true) @EnableAspectJAutoProxy(exposeProxy = true)
// 指定要扫描的Mapper类的包的路径 // 指定要扫描的Mapper类的包的路径
@MapperScan("com.czlis.**.mapper") @MapperScan("com.czlis.**.mapper")
@Slf4j
public class ApplicationConfig { public class ApplicationConfig {
@Autowired
private ComDictMapper comDictMapper;
@Autowired
private SysConfigServiceImpl sysConfigService;
@Autowired
private SysJobServiceImpl sysJobService;
//选择性提供缓存的字典类别
private List<String> list = Arrays.asList("GROUP","AU","BT","DG", "DP", "FT", "HOS","LG","PT","PW","SRD","SX","UT","CM","VF");
/** /**
* 时区配置 * 时区配置
*/ */
@ -26,4 +49,67 @@ public class ApplicationConfig {
public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() { public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
} }
/**
* 加载字典缓存数据
*/
@Bean
public void loadingDictCache() {
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
//清空所有com_dict缓存
ComDictUtils.clearDictCache();
list.stream().forEach(zdlb -> ComDictUtils.setDictCache(zdlb, comDictMapper.getComDictListByZdlb(zdlb)));
} catch (Exception e) {
log.error("获取lis代码字典失败,异步执行{}方法失败",this, e);
}
}
};
AsyncManager.me().execute(task);
}
/**
* 加载系统配置缓存
*/
@Bean
public void loadingSysConfigCache() {
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
sysConfigService.loadingConfigCache();
} catch (Exception e) {
log.error("获取系统配置字典失败,异步执行{}方法失败",this, e);
}
}
};
AsyncManager.me().execute(task);
}
/**
* 加载定时任务列表
*/
@Bean
public void loadingSysJobCache() {
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
sysJobService.init();
} catch (Exception e) {
log.error("获取系统配置字典失败,异步执行{}方法失败",this, e);
}
}
};
AsyncManager.me().execute(task);
}
} }

View File

@ -34,10 +34,10 @@ public class SysConfigServiceImpl implements ISysConfigService {
/** /**
* 项目启动时,初始化参数到缓存 * 项目启动时,初始化参数到缓存
*/ */
@PostConstruct // @PostConstruct
public void init() { // public void init() {
loadingConfigCache(); // loadingConfigCache();
} // }
/** /**
* 查询参数配置信息 * 查询参数配置信息

View File

@ -1,14 +1,13 @@
package com.czlis.liswork.service.impl; package com.czlis.liswork.service.impl;
import java.util.Arrays;
import cn.hutool.extra.pinyin.PinyinUtil; import cn.hutool.extra.pinyin.PinyinUtil;
import com.czlis.common.asyncmanager.AsyncManager;
import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.Result;
import com.czlis.common.utils.ComDictUtils;
import com.czlis.common.utils.StringUtils; import com.czlis.common.utils.StringUtils;
import com.czlis.interfaceCommon.mapper.ComDictMapper; import com.czlis.interfaceCommon.mapper.ComDictMapper;
import com.czlis.common.core.domain.entity.lis.ComDict; import com.czlis.common.core.domain.entity.lis.ComDict;
import com.czlis.interfaceCommon.utils.CommonUtil;
import com.czlis.liswork.service.ComDictService; import com.czlis.liswork.service.ComDictService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -16,65 +15,35 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.TimerTask;
import java.util.List;
/** /**
* lis字典管理 * lis字典管理
*/ */
@Service @Service
@Slf4j @Slf4j
public class ComDictServiceImpl implements ComDictService { public class ComDictServiceImpl implements ComDictService {
//选择性提供缓存的字典类别
private List<String> list = Arrays.asList("GROUP","AU","BT","DG", "DP", "FT", "HOS","LG","PT","PW","SRD","SX","UT","CM","VF");
@Autowired @Autowired
private ComDictMapper comDictMapper; private ComDictMapper comDictMapper;
@PostConstruct @Autowired
public void init() { private CommonUtil commonUtil;
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
// 异步执行目标方法
loadingDictCache();
} catch (Exception e) {
log.error("获取lis代码字典失败,异步执行{}方法失败","loadingDictCache", e);
}
}
};
AsyncManager.me().execute(task);
}
/**
* 加载字典缓存数据
*/
private void loadingDictCache() {
//清空所有com_dict缓存
ComDictUtils.clearDictCache();
list.stream().forEach(zdlb -> ComDictUtils.setDictCache(zdlb, comDictMapper.getComDictListByZdlb(zdlb)));
}
private void setDictCache(String zdlb,List<ComDict> comDictList) {
boolean isPresent = list.contains(zdlb);
if(isPresent)ComDictUtils.setDictCache(zdlb,comDictList);
}
private List<ComDict> getDictCache(String zdlb) {
boolean isPresent = list.contains(zdlb);
if(isPresent) return ComDictUtils.getDictCache(zdlb);
else return comDictMapper.getComDictListByZdlb(zdlb);
}
@Override @Override
public List<ComDict> getComDictList(ComDict comDict) { public List<ComDict> getComDictList(ComDict comDict) {
return getDictCache(comDict.getZdlb()); return commonUtil.getComDictList(comDict.getZdlb());
} }
@Override @Override
public Result getComDicts(String zdlb) { public Result getComDicts(String zdlb) {
List<ComDict> comDictList = getDictCache(zdlb); List<ComDict> comDictList = commonUtil.getComDictList(zdlb);
return new Result("0", "成功!",comDictList); return new Result("0", "成功!",comDictList);
} }
//根据编号查名称 //根据编号查名称
public Result getComDictNameById(String zdlb,String zddh) { public Result getComDictNameById(String zdlb,String zddh) {
List<ComDict> comDictList =getDictCache(zdlb); List<ComDict> comDictList =commonUtil.getComDictList(zdlb);
for (ComDict dict : comDictList) { for (ComDict dict : comDictList) {
if (zddh.equals(dict.getZddh())) { if (zddh.equals(dict.getZddh())) {
return new Result("0", "成功!",dict.getZdmc()); return new Result("0", "成功!",dict.getZdmc());
@ -84,7 +53,7 @@ public class ComDictServiceImpl implements ComDictService {
} }
//根据名称查编号 //根据名称查编号
public Result getComDictIdByName(String zdlb,String zdmc) { public Result getComDictIdByName(String zdlb,String zdmc) {
List<ComDict> comDictList =getDictCache(zdlb); List<ComDict> comDictList =commonUtil.getComDictList(zdlb);
for (ComDict dict : comDictList) { for (ComDict dict : comDictList) {
if (zdmc.equals(dict.getZdmc())) { if (zdmc.equals(dict.getZdmc())) {
return new Result("0", "成功!",dict.getZddh()); return new Result("0", "成功!",dict.getZddh());
@ -109,7 +78,7 @@ public class ComDictServiceImpl implements ComDictService {
int row = comDictMapper.insertComDict(comDict); int row = comDictMapper.insertComDict(comDict);
if (row > 0) { if (row > 0) {
List<ComDict> comDictList = comDictMapper.getComDictList(comDict); List<ComDict> comDictList = comDictMapper.getComDictList(comDict);
setDictCache(comDict.getZdlb(), comDictList); commonUtil.setDictCache(comDict.getZdlb(), comDictList);
} }
return null; return null;
} }
@ -158,7 +127,7 @@ public class ComDictServiceImpl implements ComDictService {
ComDict comDict0 = new ComDict(); ComDict comDict0 = new ComDict();
comDict0.setZdlb(zdlb); comDict0.setZdlb(zdlb);
List<ComDict> comDictList1 = comDictMapper.getComDictList(comDict0); List<ComDict> comDictList1 = comDictMapper.getComDictList(comDict0);
setDictCache(comDict0.getZdlb(), comDictList1); commonUtil.setDictCache(comDict0.getZdlb(), comDictList1);
if (failureNum == comDictList.size()) { if (failureNum == comDictList.size()) {
return new Result("0", "数据已全部导入成功!共 " + comDictList.size() + " 条"); return new Result("0", "数据已全部导入成功!共 " + comDictList.size() + " 条");
} else { } else {
@ -196,7 +165,7 @@ public class ComDictServiceImpl implements ComDictService {
if (zddh == null || zddh.equals("")) return new Result("-1", "字典代号不能为空!"); if (zddh == null || zddh.equals("")) return new Result("-1", "字典代号不能为空!");
if (yljg == null || yljg.equals("")) return new Result("-1", "医疗机构不能为空!"); if (yljg == null || yljg.equals("")) return new Result("-1", "医疗机构不能为空!");
int row = comDictMapper.delComDict(comDict); int row = comDictMapper.delComDict(comDict);
if (row > 0) setDictCache(zdlb, comDictMapper.getComDictListByZdlb(zdlb)); if (row > 0) commonUtil.setDictCache(zdlb,comDictMapper.getComDictListByZdlb(zdlb));
return new Result("0", "删除成功!"); return new Result("0", "删除成功!");
} }
@ -206,7 +175,7 @@ public class ComDictServiceImpl implements ComDictService {
int row = comDictMapper.updateComDict(comDict); int row = comDictMapper.updateComDict(comDict);
if (row > 0) { if (row > 0) {
List<ComDict> comDictList = comDictMapper.getComDictList(comDict); List<ComDict> comDictList = comDictMapper.getComDictList(comDict);
setDictCache(comDict.getZdlb(), comDictList); commonUtil.setDictCache(comDict.getZdlb(), comDictList);
} }
return new Result("0", "修改成功!"); return new Result("0", "修改成功!");
} }