缓存异步处理

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.Threads;
import com.czlis.common.utils.spring.SpringUtils; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -29,7 +29,7 @@ public class ComDictUtils {
* 清空字典缓存 * 清空字典缓存
*/ */
public static void clearDictCache() { 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); SpringUtils.getBean(RedisCache.class).deleteObject(keys);
} }
/** /**

View File

@ -1,7 +1,7 @@
package com.czlis.system.aspectj; package com.czlis.system.aspectj;
import com.czlis.common.annotation.Async; import com.czlis.common.annotation.Async;
import com.czlis.system.manager.AsyncManager; import com.czlis.common.asyncmanager.AsyncManager;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
@ -42,7 +42,7 @@ public class AsyncAspect {
// 异步执行目标方法 // 异步执行目标方法
targetMethod.invoke(targetObject, methodArgs); targetMethod.invoke(targetObject, methodArgs);
} catch (Exception e) { } 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.ServletUtils;
import com.czlis.common.utils.StringUtils; import com.czlis.common.utils.StringUtils;
import com.czlis.common.utils.ip.IpUtils; 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.manager.factory.AsyncFactory;
import com.czlis.system.domain.SysOperLog; import com.czlis.system.domain.SysOperLog;
import lombok.extern.slf4j.Slf4j; 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.AfterThrowing;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.NamedThreadLocal; import org.springframework.core.NamedThreadLocal;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult; 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.MessageUtils;
import com.czlis.common.utils.ServletUtils; import com.czlis.common.utils.ServletUtils;
import com.czlis.common.utils.StringUtils; 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.manager.factory.AsyncFactory;
import com.czlis.system.web.service.TokenService; import com.czlis.system.web.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired; 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.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.TimerTask;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.PostConstruct; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -25,6 +29,7 @@ import com.czlis.system.service.ISysDictTypeService;
* @author admin * @author admin
*/ */
@Service @Service
@Slf4j
public class SysDictTypeServiceImpl implements ISysDictTypeService { public class SysDictTypeServiceImpl implements ISysDictTypeService {
@Autowired @Autowired
private SysDictTypeMapper dictTypeMapper; private SysDictTypeMapper dictTypeMapper;
@ -37,7 +42,18 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService {
*/ */
@PostConstruct @PostConstruct
public void init() { public void init() {
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
// 异步执行目标方法
loadingDictCache(); loadingDictCache();
} catch (Exception e) {
log.error("获取系统字典失败,异步执行{}方法失败","loadingDictCache", e);
}
}
};
AsyncManager.me().execute(task);
} }
/** /**
@ -123,8 +139,10 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService {
/** /**
* 加载字典缓存数据 * 加载字典缓存数据
*/ */
@Async
@Override @Override
public void loadingDictCache() { public void loadingDictCache() {
System.out.println("异步执行线程:" + Thread.currentThread().getName()); // 新增此行
SysDictData dictData = new SysDictData(); SysDictData dictData = new SysDictData();
dictData.setStatus("0"); dictData.setStatus("0");
Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); 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.MessageUtils;
import com.czlis.common.utils.StringUtils; import com.czlis.common.utils.StringUtils;
import com.czlis.common.utils.ip.IpUtils; 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.manager.factory.AsyncFactory;
import com.czlis.system.security.context.AuthenticationContextHolder; import com.czlis.system.security.context.AuthenticationContextHolder;
import com.czlis.system.service.ISysConfigService; 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.MessageUtils;
import com.czlis.common.utils.SecurityUtils; import com.czlis.common.utils.SecurityUtils;
import com.czlis.common.utils.StringUtils; 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.manager.factory.AsyncFactory;
import com.czlis.system.service.ISysConfigService; import com.czlis.system.service.ISysConfigService;
import com.czlis.system.service.ISysUserService; import com.czlis.system.service.ISysUserService;

View File

@ -3,6 +3,7 @@ package com.czlis.liswork.service.impl;
import java.util.Arrays; 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.ComDictUtils;
import com.czlis.common.utils.StringUtils; import com.czlis.common.utils.StringUtils;
@ -17,6 +18,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.List; import java.util.List;
import java.util.TimerTask;
/** /**
* lis字典管理 * lis字典管理
*/ */
@ -29,7 +32,18 @@ public class ComDictServiceImpl implements ComDictService {
private ComDictMapper comDictMapper; private ComDictMapper comDictMapper;
@PostConstruct @PostConstruct
public void init() { public void init() {
TimerTask task = new TimerTask(){
@Override
public void run() {
try {
// 异步执行目标方法
loadingDictCache(); 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; LabReqmainMapper labReqmainMapper;
@Autowired @Autowired
LabReqdetailMapper labReqdetailMapper; LabReqdetailMapper labReqdetailMapper;
@Override @Override
public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, Long userId) { 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 jyrq
* @param yq * @param yq
* @param ybh * @param ybh
@ -215,6 +217,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
//if("0".equals(result.getCode()))return result; //if("0".equals(result.getCode()))return result;
return new Result("0", "保存成功!"); return new Result("0", "保存成功!");
} }
public Result beforecheck2(Date jyrq, String yq, String ybh, String hdys) { public Result beforecheck2(Date jyrq, String yq, String ybh, String hdys) {
if (hdys == null || "".equals(hdys)) new Result("-1", "审核者为空,无法审核!"); if (hdys == null || "".equals(hdys)) new Result("-1", "审核者为空,无法审核!");
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
@ -247,6 +250,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/** /**
* 保存所有结果的修正值,涉及:空结果清除,计算项目添加,添加单位,添加申请项目编码,参考值重新计算更新,结果标志重新计算更新,危急值标志计算更新 * 保存所有结果的修正值,涉及:空结果清除,计算项目添加,添加单位,添加申请项目编码,参考值重新计算更新,结果标志重新计算更新,危急值标志计算更新
*
* @param jyrq * @param jyrq
* @return * @return
*/ */
@ -269,19 +273,23 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/** /**
* 结果表补充申请单项目代码 * 结果表补充申请单项目代码
*
* @param jyrq * @param jyrq
* @param yq * @param yq
* @param ybh * @param ybh
*/ */
public void setItemSqxmdh(Date jyrq, String yq, String ybh) { public void setItemSqxmdh(Date jyrq, String yq, String ybh) {
String sqh = commonUtil.getSqhByKey(jyrq, yq, 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); setItemSqxmdh(jyrq, yq, ybh, sqh);
} }
} }
//内部使用 //内部使用
private void setItemSqxmdh(Date jyrq, String yq, String ybh, String 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); int sl = labReqdetailMapper.getCountByKey(sqh);
if (sl == 1) { if (sl == 1) {
String sqxmdh = lisWorkOperMapper.selectSqxmdh(sqh); String sqxmdh = lisWorkOperMapper.selectSqxmdh(sqh);
@ -291,8 +299,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
} }
} }
} }
/** /**
* 计算项目增加及重新计算 * 计算项目增加及重新计算
*
* @param jyrq * @param jyrq
* @param yq * @param yq
* @param ybh * @param ybh
@ -302,6 +312,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
calcsample(labPat); calcsample(labPat);
return new Result("0", "保存成功!"); return new Result("0", "保存成功!");
} }
//内部使用 //内部使用
private void calcsample(LabPat labPat) { private void calcsample(LabPat labPat) {
Date jyrq = labPat.getJyrq(); Date jyrq = labPat.getJyrq();
@ -341,8 +352,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
} }
} }
} }
/** /**
* 计算项目参考值结果异常标志 * 计算项目参考值结果异常标志
*
* @param jyrq * @param jyrq
* @param yq * @param yq
* @param ybh * @param ybh
@ -355,6 +368,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/** /**
* 计算项目参考值结果异常标志(内部使用) * 计算项目参考值结果异常标志(内部使用)
*
* @param labPat * @param labPat
* @return 返回值0正常, 1有危急值明细存在 * @return 返回值0正常, 1有危急值明细存在
*/ */
@ -409,7 +423,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
String brxm = labPat.getBrxm(); String brxm = labPat.getBrxm();
if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) {
lb_wjz = false; lb_wjz = false;
}; }
;
String brly = labPat.getBrly(); String brly = labPat.getBrly();
brly = commonUtil.getComDictNameById("PT", brly); brly = commonUtil.getComDictNameById("PT", brly);
if (brly.contains("质控")) lb_wjz = false; if (brly.contains("质控")) lb_wjz = false;
@ -432,6 +447,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/** /**
* 明细结果计算参考值异常标志危急值标志并更新 * 明细结果计算参考值异常标志危急值标志并更新
*
* @param labPat * @param labPat
* @param labResult * @param labResult
* @return * @return
@ -524,7 +540,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
//文字型结果判断 //文字型结果判断
String jgbzold = labResult.getJgbz(); String jgbzold = labResult.getJgbz();
String lmtflag = getitemlmtflag(yq, xmdh, csjg); 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; resultflag = lmtflag;
if ("J".equals(lmtflag)) wjzflag = "H"; if ("J".equals(lmtflag)) wjzflag = "H";
} }
@ -546,8 +563,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
if (!"".equals(wjzflag)) wjz = 1; if (!"".equals(wjzflag)) wjz = 1;
return wjz; return wjz;
} }
/** /**
* 特定条件危急值判断 * 特定条件危急值判断
*
* @param labPat * @param labPat
* @param labResult * @param labResult
* @return * @return
@ -617,6 +636,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/** /**
* 获取常用取值结果标志 * 获取常用取值结果标志
*
* @param yq * @param yq
* @param xmdh * @param xmdh
* @param csjg * @param csjg