diff --git a/lis-common/src/main/java/com/czlis/common/annotation/Async.java b/lis-common/src/main/java/com/czlis/common/annotation/Async.java new file mode 100644 index 0000000..2fe9d20 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/annotation/Async.java @@ -0,0 +1,14 @@ +package com.czlis.common.annotation; + +import java.lang.annotation.*; + +/** + * 异步任务注解 + */ +@Target({ ElementType.METHOD }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface Async { + + +} diff --git a/lis-common/src/main/java/com/czlis/common/enums/BusinessType.java b/lis-common/src/main/java/com/czlis/common/enums/BusinessType.java index 3fff28a..8966858 100644 --- a/lis-common/src/main/java/com/czlis/common/enums/BusinessType.java +++ b/lis-common/src/main/java/com/czlis/common/enums/BusinessType.java @@ -55,4 +55,9 @@ public enum BusinessType { * 清空数据 */ CLEAN, + + /** + * 接口调用 + */ + INTERFACE_INVOKE, } diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SampleStatusConstants.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SampleStatusConstants.java new file mode 100644 index 0000000..8a4f34c --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SampleStatusConstants.java @@ -0,0 +1,6 @@ +package com.czlis.interfaceCommon.constants; + +public class SampleStatusConstants { + + public static final String SIGNFOR = "2"; //标本签收 +} \ No newline at end of file diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisInterfaceUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisInterfaceUtil.java index 3f42226..e882df8 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisInterfaceUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisInterfaceUtil.java @@ -5,7 +5,10 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.czlis.common.annotation.Async; +import com.czlis.common.annotation.Log; import com.czlis.common.config.RuoYiConfig; +import com.czlis.common.enums.BusinessType; import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; import com.czlis.common.core.domain.Result; import com.czlis.interfaceCommon.mapper.LisInterfaceMapper; @@ -27,13 +30,15 @@ public class LisInterfaceUtil { CommonUtil commonUtil; /** - * + * 接口调用 * @param type * @param inValue * @return */ + @Log(title = "接口调用",businessType = BusinessType.INTERFACE_INVOKE) public Result invokeLisInterface(String type,String inValue) { String interfaceType = commonUtil.getComOptValue("HISOPT","SP_INTER"); + log.info("开始调用{}接口,入参:{}",type,interfaceType); switch (interfaceType){ case "2": //存储过程 return invokeSP(type, inValue); @@ -109,7 +114,9 @@ public class LisInterfaceUtil { }catch (Exception e){ e.printStackTrace(); log.error("调用lis的http接口出错:",e); + return new Result("-1","调用http接口失败:"+e.getMessage()); } + log.info("调用http接口成功类型:{},入参:{}/r/n,出参:{}",transCode,jsonStr,retMsg); String message=""; String resultCode=""; // 检查输入是否为空 @@ -125,6 +132,11 @@ public class LisInterfaceUtil { } + /** + * 把json格式转换成xml格式 + * @param inValue + * @return + */ public String changeXml(String inValue){ JSONObject jsonObj = JSONUtil.parseObj(inValue); Map map = jsonObj.toBean(Map.class); diff --git a/lis-system/src/main/java/com/czlis/system/aspectj/AsyncAspect.java b/lis-system/src/main/java/com/czlis/system/aspectj/AsyncAspect.java new file mode 100644 index 0000000..3598d74 --- /dev/null +++ b/lis-system/src/main/java/com/czlis/system/aspectj/AsyncAspect.java @@ -0,0 +1,58 @@ +package com.czlis.system.aspectj; + +import com.czlis.common.annotation.Async; +import com.czlis.system.manager.AsyncManager; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; +import java.util.TimerTask; + +/** + * 异步任务处理 + */ +@Aspect +@Component +@Slf4j +public class AsyncAspect { + + + /** + * 环绕通知:拦截被@Async标注的方法,将其异步执行 + * + * @param joinPoint 切点 + */ + @Around("@annotation(async)") + public Object doAround(ProceedingJoinPoint joinPoint, Async async) throws Throwable { + // 1. 获取目标方法信息 + Object targetObject = joinPoint.getTarget(); + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method targetMethod = signature.getMethod(); + Object[] methodArgs = joinPoint.getArgs(); + + // 2. 将目标方法调用包装成TimerTask + TimerTask task = new TimerTask() { + @Override + public void run() { + try { + // 异步执行目标方法 + targetMethod.invoke(targetObject, methodArgs); + } catch (Exception e) { + log.error("异步执行方法失败", e); + } + } + }; + + // 3. 通过AsyncManager提交异步任务(不修改原有AsyncManager) + AsyncManager.me().execute(task); + + // 4. 若原方法有返回值,可返回null或自定义结果(异步方法通常建议返回void) + return null; + } + + +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java index abc39b4..41baad6 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java @@ -6,6 +6,7 @@ import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.LabPat; import com.czlis.common.core.domain.entity.LabReqmain; +import com.czlis.interfaceCommon.constants.SampleStatusConstants; import com.czlis.interfaceCommon.mapper.LabReqmainMapper; import com.czlis.interfaceCommon.pojo.inter.DayMessage; import com.czlis.interfaceCommon.pojo.inter.GetReqInterface; @@ -73,7 +74,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { setReqStatus.setIp(""); setReqStatus.setSqh(sqh); setReqStatus.setUserid(userId.toString()); - setReqStatus.setStatus("2"); + setReqStatus.setStatus(SampleStatusConstants.SIGNFOR); String jsonStr = JSONUtil.toJsonStr(setReqStatus); Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, jsonStr); if(!result.getCode().equals("0")) return result;