缓存异步处理

This commit is contained in:
jiangs 2025-08-19 11:59:29 +08:00
parent 9cde711a53
commit eaadfe2eeb
11 changed files with 290 additions and 240 deletions

View File

@ -1,4 +1,4 @@
package com.czlis.system.manager;
package com.czlis.common.asyncmanager;
import com.czlis.common.utils.Threads;
import com.czlis.common.utils.spring.SpringUtils;

View File

@ -1,4 +1,4 @@
package com.czlis.system.manager;
package com.czlis.common.asyncmanager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -29,7 +29,7 @@ public class ComDictUtils {
* 清空字典缓存
*/
public static void clearDictCache() {
Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys("com_dict:" + "*");
Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(CacheConstants.COM_DICT_KEY + "*");
SpringUtils.getBean(RedisCache.class).deleteObject(keys);
}
/**

View File

@ -1,7 +1,7 @@
package com.czlis.system.aspectj;
import com.czlis.common.annotation.Async;
import com.czlis.system.manager.AsyncManager;
import com.czlis.common.asyncmanager.AsyncManager;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
@ -42,7 +42,7 @@ public class AsyncAspect {
// 异步执行目标方法
targetMethod.invoke(targetObject, methodArgs);
} catch (Exception e) {
log.error("异步执行方法失败", e);
log.error("异步执行{}方法失败",targetMethod, e);
}
}
};

View File

@ -13,7 +13,7 @@ import com.czlis.common.utils.SecurityUtils;
import com.czlis.common.utils.ServletUtils;
import com.czlis.common.utils.StringUtils;
import com.czlis.common.utils.ip.IpUtils;
import com.czlis.system.manager.AsyncManager;
import com.czlis.common.asyncmanager.AsyncManager;
import com.czlis.system.manager.factory.AsyncFactory;
import com.czlis.system.domain.SysOperLog;
import lombok.extern.slf4j.Slf4j;
@ -23,8 +23,6 @@ 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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.NamedThreadLocal;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;

View File

@ -7,7 +7,7 @@ import com.czlis.common.core.domain.model.LoginUser;
import com.czlis.common.utils.MessageUtils;
import com.czlis.common.utils.ServletUtils;
import com.czlis.common.utils.StringUtils;
import com.czlis.system.manager.AsyncManager;
import com.czlis.common.asyncmanager.AsyncManager;
import com.czlis.system.manager.factory.AsyncFactory;
import com.czlis.system.web.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;

View File

@ -3,9 +3,13 @@ package com.czlis.system.service.impl;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TimerTask;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import com.czlis.common.annotation.Async;
import com.czlis.common.asyncmanager.AsyncManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -25,6 +29,7 @@ import com.czlis.system.service.ISysDictTypeService;
* @author admin
*/
@Service
@Slf4j
public class SysDictTypeServiceImpl implements ISysDictTypeService {
@Autowired
private SysDictTypeMapper dictTypeMapper;
@ -37,7 +42,18 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService {
*/
@PostConstruct
public void init() {
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
// 异步执行目标方法
loadingDictCache();
} catch (Exception e) {
log.error("获取系统字典失败,异步执行{}方法失败","loadingDictCache", e);
}
}
};
AsyncManager.me().execute(task);
}
/**
@ -123,8 +139,10 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService {
/**
* 加载字典缓存数据
*/
@Async
@Override
public void loadingDictCache() {
System.out.println("异步执行线程:" + Thread.currentThread().getName()); // 新增此行
SysDictData dictData = new SysDictData();
dictData.setStatus("0");
Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType));

View File

@ -12,7 +12,7 @@ import com.czlis.common.utils.DateUtils;
import com.czlis.common.utils.MessageUtils;
import com.czlis.common.utils.StringUtils;
import com.czlis.common.utils.ip.IpUtils;
import com.czlis.system.manager.AsyncManager;
import com.czlis.common.asyncmanager.AsyncManager;
import com.czlis.system.manager.factory.AsyncFactory;
import com.czlis.system.security.context.AuthenticationContextHolder;
import com.czlis.system.service.ISysConfigService;

View File

@ -11,7 +11,7 @@ import com.czlis.common.exception.user.CaptchaExpireException;
import com.czlis.common.utils.MessageUtils;
import com.czlis.common.utils.SecurityUtils;
import com.czlis.common.utils.StringUtils;
import com.czlis.system.manager.AsyncManager;
import com.czlis.common.asyncmanager.AsyncManager;
import com.czlis.system.manager.factory.AsyncFactory;
import com.czlis.system.service.ISysConfigService;
import com.czlis.system.service.ISysUserService;

View File

@ -3,6 +3,7 @@ package com.czlis.liswork.service.impl;
import java.util.Arrays;
import cn.hutool.extra.pinyin.PinyinUtil;
import com.czlis.common.asyncmanager.AsyncManager;
import com.czlis.common.core.domain.Result;
import com.czlis.common.utils.ComDictUtils;
import com.czlis.common.utils.StringUtils;
@ -17,6 +18,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.TimerTask;
/**
* lis字典管理
*/
@ -29,7 +32,18 @@ public class ComDictServiceImpl implements ComDictService {
private ComDictMapper comDictMapper;
@PostConstruct
public void init() {
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
// 异步执行目标方法
loadingDictCache();
} catch (Exception e) {
log.error("获取lis代码字典失败,异步执行{}方法失败","loadingDictCache", e);
}
}
};
AsyncManager.me().execute(task);
}
/**
* 加载字典缓存数据

View File

@ -41,6 +41,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
LabReqmainMapper labReqmainMapper;
@Autowired
LabReqdetailMapper labReqdetailMapper;
@Override
public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, Long userId) {
@ -192,6 +193,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/**
* 审核报告单全流程
*
* @param jyrq
* @param yq
* @param ybh
@ -215,6 +217,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
//if("0".equals(result.getCode()))return result;
return new Result("0", "保存成功!");
}
public Result beforecheck2(Date jyrq, String yq, String ybh, String hdys) {
if (hdys == null || "".equals(hdys)) new Result("-1", "审核者为空,无法审核!");
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
@ -247,6 +250,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/**
* 保存所有结果的修正值,涉及:空结果清除,计算项目添加,添加单位,添加申请项目编码,参考值重新计算更新,结果标志重新计算更新,危急值标志计算更新
*
* @param jyrq
* @return
*/
@ -269,19 +273,23 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/**
* 结果表补充申请单项目代码
*
* @param jyrq
* @param yq
* @param ybh
*/
public void setItemSqxmdh(Date jyrq, String yq, String ybh) {
String sqh = commonUtil.getSqhByKey(jyrq, yq, ybh);
if (sqh==null || "".equals(sqh)) {}else{
if (sqh == null || "".equals(sqh)) {
} else {
setItemSqxmdh(jyrq, yq, ybh, sqh);
}
}
//内部使用
private void setItemSqxmdh(Date jyrq, String yq, String ybh, String sqh) {
if (sqh==null || "".equals(sqh)) {}else{
if (sqh == null || "".equals(sqh)) {
} else {
int sl = labReqdetailMapper.getCountByKey(sqh);
if (sl == 1) {
String sqxmdh = lisWorkOperMapper.selectSqxmdh(sqh);
@ -291,8 +299,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
}
}
}
/**
* 计算项目增加及重新计算
*
* @param jyrq
* @param yq
* @param ybh
@ -302,6 +312,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
calcsample(labPat);
return new Result("0", "保存成功!");
}
//内部使用
private void calcsample(LabPat labPat) {
Date jyrq = labPat.getJyrq();
@ -341,8 +352,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
}
}
}
/**
* 计算项目参考值结果异常标志
*
* @param jyrq
* @param yq
* @param ybh
@ -355,6 +368,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/**
* 计算项目参考值结果异常标志(内部使用)
*
* @param labPat
* @return 返回值0正常, 1有危急值明细存在
*/
@ -409,7 +423,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
String brxm = labPat.getBrxm();
if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) {
lb_wjz = false;
};
}
;
String brly = labPat.getBrly();
brly = commonUtil.getComDictNameById("PT", brly);
if (brly.contains("质控")) lb_wjz = false;
@ -432,6 +447,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/**
* 明细结果计算参考值异常标志危急值标志并更新
*
* @param labPat
* @param labResult
* @return
@ -524,7 +540,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
//文字型结果判断
String jgbzold = labResult.getJgbz();
String lmtflag = getitemlmtflag(yq, xmdh, csjg);
if("P".equals(jgbzold) && (csjg.indexOf("阳")>=0 || csjg.indexOf("+")>=0 || csjg.indexOf(":")>=0 ) && (lmtflag == null || lmtflag.trim().isEmpty())) lmtflag="P";
if ("P".equals(jgbzold) && (csjg.indexOf("阳") >= 0 || csjg.indexOf("+") >= 0 || csjg.indexOf(":") >= 0) && (lmtflag == null || lmtflag.trim().isEmpty()))
lmtflag = "P";
resultflag = lmtflag;
if ("J".equals(lmtflag)) wjzflag = "H";
}
@ -546,8 +563,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
if (!"".equals(wjzflag)) wjz = 1;
return wjz;
}
/**
* 特定条件危急值判断
*
* @param labPat
* @param labResult
* @return
@ -617,6 +636,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/**
* 获取常用取值结果标志
*
* @param yq
* @param xmdh
* @param csjg