From 7aab004601e77890b158f19d1735594a8326feaa Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 24 四月 2025 17:11:17 +0800
Subject: [PATCH] 数据库事务注解位置调整

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java |   76 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java
new file mode 100644
index 0000000..a95c192
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java
@@ -0,0 +1,76 @@
+package com.dy.common.mw.protocol;
+
+import java.util.Collection;
+import java.util.HashMap;
+
+public class OnLineHandle {
+	
+	/**
+	 * 瑙f瀽涓婄嚎鏁版嵁锛屽緱鍒癛tuAddr
+	 * @param bs 瀛楄妭鏁扮粍
+	 * @return OnLine.OnLineResult
+	 */
+	public OnLine.OnLineResult parse(byte[] bs)throws Exception{
+		OnLine.OnLineResult rs = null ;
+		HashMap<String, AnnotationOnLineVo> onLineMap = ProtocolCache.getOnLineMap() ;
+		Collection<AnnotationOnLineVo> set = onLineMap.values() ;
+		if(set.size() == 0){
+			throw new Exception("澶勭悊涓婄嚎鏃讹紝寰楀埌鐨勫崗璁泦鍚堜负绌恒��") ;
+		}
+		int prority = ProtocolConstant.firstPriority ;
+		while(true){
+			Object[] objs = this.getClassObjAndAnnotationVo(prority, set) ;
+			OnLine onLine = (OnLine)objs[0] ;
+			if(onLine == null && prority == ProtocolConstant.firstPriority){
+				throw new Exception("澶勭悊涓婄嚎鏃讹紝鏈緱鍒颁紭鍏堢骇涓�" + prority + "涓婄嚎澶勭悊绫伙紒") ;
+			}else if(onLine == null){
+				//璇存槑涓婄嚎澶勭悊闆嗗悎宸茬粡閬嶅巻瀹屼簡銆�
+				break ;
+			}
+			rs = onLine.parse(bs) ;
+			OnLinePool.freeInstance(((AnnotationOnLineVo)objs[1]).clazz, onLine);
+			if(rs != null){
+				if(rs.result == OnLine.OnLineAction_success){
+					//鎴愬姛, 鍋滄寰幆锛岃繑鍥炵粨鏋�
+					break ;
+				}else if(rs.result == OnLine.OnLineAction_success_noMe){
+					//涓嶆槸鏈崗璁暟鎹� , 寰幆缁х画
+					prority++ ;
+				}else if(rs.result == OnLine.OnLineAction_success_response){
+					//瑙f瀽涓婄嚎鏁版嵁锛岄渶瑕佸洖鍐欐暟鎹�
+					//鍋滄寰幆锛岃繑鍥炵粨鏋�
+					break ;
+				}else if(rs.result == OnLine.OnLineAction_fail){
+					//瑙f瀽涓婄嚎鏁版嵁閿欒锛屼竴鑸槸涓婅鏁版嵁涓虹┖
+					throw new Exception("澶勭悊涓婄嚎鏃讹紝瑙f瀽ID鍑洪敊(鍙兘绋嬪簭閿欒锛屼笂琛屾暟鎹负null)锛�") ;
+				}
+			}
+		}
+		if(rs == null){
+			throw new Exception("澶勭悊涓婄嚎鏃跺嚭閿欙紝鏈兘鎴愬姛鍒嗘瀽鍑篒MEI鍙凤紒") ;
+		}
+		return rs ;
+	}
+	
+	/**
+	 * 寰楀埌澶勭悊绫诲璞�
+	 * @param priority 浼樺厛绾�
+	 * @param set 闆嗗悎
+	 * @return Object[]
+	 * @throws Exception 寮傚父
+	 */
+	private Object[] getClassObjAndAnnotationVo(int priority, Collection<AnnotationOnLineVo> set) throws Exception{
+		OnLine obj = null ;
+		AnnotationOnLineVo rVo = null ;
+		for(AnnotationOnLineVo vo : set){
+			if(priority == vo.priority){
+				obj = OnLinePool.getInstance(vo.clazz) ;
+				rVo = vo ;
+				break ;
+			}
+		}
+		return new Object[]{obj, rVo} ;
+	}
+
+
+}

--
Gitblit v1.8.0