From fc6dd85a865c4cadae0b9a07d56e2988d2262f10 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期二, 22 七月 2025 17:28:52 +0800 Subject: [PATCH] 优化数据库事务帮助类 , 查询/日志生成类 --- wms/DbTranHelper.cs | 87 +++++++++++++++++++++++++++++-------------- 1 files changed, 58 insertions(+), 29 deletions(-) diff --git a/wms/DbTranHelper.cs b/wms/DbTranHelper.cs index bbfb2da..6a7ea13 100644 --- a/wms/DbTranHelper.cs +++ b/wms/DbTranHelper.cs @@ -19,59 +19,75 @@ /// <summary> /// 鏁版嵁搴撲簨鍔″鐞�( 鍒涘缓浠诲姟 ) /// </summary> - /// <remarks>瑕佹眰: obj != null</remarks> + /// <remarks><b>[ 瑕佹眰 ]</b> obj 鈮�null<br/> + /// <b>[ 娉ㄦ剰 ]</b> 鎵�湁鐨勬暟鎹簱鎿嶄綔 , 閮戒細鍦ㄥ璞�= null 鏃堕�鎷╄烦杩�, 涓斾笉浼氭姤閿�, 闄や簡 TaskToInsert ; + /// <br/>濡傛灉瀛樺湪鏌愪釜蹇呴』瀹屾垚鐨勬暟鎹簱鎿嶄綔 , 闇�湪璋冪敤鏃剁‘淇濊瀵硅薄 鈮�null</remarks> /// <param name="obj"></param> /// <returns></returns> - public static (bool Success, string Message) DoDbTranTask(DbTranTaskObj obj) { + public static (bool, string) CreateTask(CreateTaskObj obj) { var db = new SqlHelper<object>().GetInstance(); try { using (var tran = db.Ado.UseTran()) { - // 瀛樺湪[鏃瀹瑰櫒鍏宠仈淇℃伅:鍒犻櫎[鏃[瀹瑰櫒璐у搧鏄庣粏][璐т綅瀹瑰櫒鍏崇郴],鏇存柊[璐т綅][瀹瑰櫒鏁伴噺] + // 鏇存柊[瀹瑰櫒琛╙(涓氬姟闇�) + if (obj.ContainerToUpdate != null && db.Updateable(obj.ContainerToUpdate).UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) { + return (false, $"鏇存柊[瀹瑰櫒][瑙勬牸(鐗╂枡缂栫爜)]澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.ContainerToUpdate)}\n"); + } + + // 鏇存柊[瀹瑰櫒璐у搧鏄庣粏](涓氬姟闇�) + if (obj.CgDetailToUpdate != null && db.Updateable(obj.CgDetailToUpdate).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鏇存柊[瀹瑰櫒璐у搧鏄庣粏][鐗╂枡鐘舵�]澶辫触!!鐗╂枡鍙�'{obj.CgDetailToUpdate}',鐗╂枡鐘舵�=>'{obj.CgDetailToUpdate.S_ITEM_STATE}'"); + } + + #region 鍒犻櫎[鏃瀹瑰櫒缁戝畾淇℃伅 if (obj.Old != null) { if (obj.Old.CgDetail != null && db.Deleteable(obj.Old.CgDetail).ExecuteCommand() <= 0) { tran.RollbackTran(); - return (false, $"鍒犻櫎[鏃х墿鏂欎俊鎭痌澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.CgDetail)}\n"); + return (false, $"鍒犻櫎[鏃у鍣ㄨ揣鍝佹槑缁哴澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.CgDetail)}\n"); } if (obj.Old.LocCntrRel != null && db.Deleteable(obj.Old.LocCntrRel).ExecuteCommand() <= 0) { tran.RollbackTran(); - return (false, $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.LocCntrRel)}\n"); + return (false, $"鍒犻櫎[鏃ц揣浣嶅鍣ㄧ粦瀹歖澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.LocCntrRel)}\n"); } if (obj.Old.Location != null && db.Updateable(obj.Old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); return (false, $"鏇存柊[鏃ц揣浣峕[褰撳墠瀹瑰櫒鏁伴噺]澶辫触!!璐т綅='{obj.Old.Location.S_CODE}',鏁伴噺=>{obj.Old.Location.N_CURRENT_NUM}"); } } + #endregion - // 鏇存柊[瀹瑰櫒琛╙(涓氬姟闇�) - if (obj.ContainerToUpdate != null && db.Updateable(obj.ContainerToUpdate).UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) { - return (false, $"鏇存柊[瀹瑰櫒琛╙澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.ContainerToUpdate)}\n"); + #region 娣诲姞[鏂癩瀹瑰櫒缁戝畾淇℃伅 + if (obj.New != null) { + if (obj.New.CgDetail != null && db.Insertable(obj.New.CgDetail).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鎻掑叆[鏂板鍣ㄨ揣鍝佹槑缁哴澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.New.CgDetail)}\n"); + } + if (obj.New.LocCntrRel != null && db.Insertable(obj.New.LocCntrRel).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return (false, $"鎻掑叆[鏃ц揣浣嶅鍣ㄧ粦瀹歖澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.New.LocCntrRel)}\n"); + } + // 鏂拌揣浣嶄俊鎭�甯稿氨鏄�StartLoc , 鍦�StartLocToUpdate 涓鐞嗗嵆鍙� } + #endregion - // 鏇存柊[瀹瑰櫒璐у搧鏄庣粏](涓氬姟闇�) - if (obj.CgDetailToUpdate != null && db.Updateable(obj.CgDetailToUpdate).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return (false, $"鏇存柊[鐗╂枡鏄庣粏琛╙澶辫触!!鐗╂枡鍙�'{obj.CgDetailToUpdate}',鐗╂枡鐘舵�=>'{obj.CgDetailToUpdate.S_ITEM_STATE}'"); - } - - // 瀛樺湪[鏂癩[璐т綅瀹瑰櫒缁戝畾鍏崇郴]:鎻掑叆[璐т綅瀹瑰櫒鍏崇郴琛╙ - if (obj.LocCntrRelToInsert != null && db.Insertable(obj.LocCntrRelToInsert).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return (false, $"鎻掑叆[瀹瑰櫒璐т綅缁戝畾琛╙澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.LocCntrRelToInsert)}\n"); - } - - // 鏇存柊[璧风偣][缁堢偣][閿佺姸鎬乚,鍒涘缓[浠诲姟] + #region 鍒涘缓浠诲姟 + 璐т綅閿� if (obj.StartLocToUpdate != null && db.Updateable(obj.StartLocToUpdate).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return (false, $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!!璧风偣='{obj.StartLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.StartLocToUpdate.S_LOCK_STATE}'"); + return (false, $"鏇存柊[璧风偣璐т綅][閿佺姸鎬乚澶辫触!!璧风偣='{obj.StartLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.StartLocToUpdate.S_LOCK_STATE}'"); } if (obj.EndLocToUpdate != null && db.Updateable(obj.EndLocToUpdate).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return (false, $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!!缁堢偣='{obj.EndLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.EndLocToUpdate.S_LOCK_STATE}'"); + return (false, $"鏇存柊[缁堢偣璐т綅][閿佺姸鎬乚澶辫触!!缁堢偣='{obj.EndLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.EndLocToUpdate.S_LOCK_STATE}'"); } - if (obj.TaskToInsert != null && db.Insertable(obj.TaskToInsert).ExecuteCommand() <= 0) { + if (obj.TaskToInsert == null) { + tran.RollbackTran(); + throw new ArgumentException("鏁版嵁搴撲簨鍔″鐞�寰呮彃鍏ョ殑[浠诲姟]涓虹┖!!"); // 寰呮彃鍏ョ殑浠诲姟涓嶅瓨鍦�鐩存帴鎶涘嚭寮傚父 + } + if (db.Insertable(obj.TaskToInsert).ExecuteCommand() <= 0) { tran.RollbackTran(); return (false, $"鐢熸垚浠诲姟'{obj.TaskToInsert.S_TYPE}'澶辫触!!浠诲姟鍙�'{obj.TaskToInsert.S_CODE}',瀹瑰櫒鍙�'{obj.TaskToInsert.S_CNTR_CODE}',璧风偣='{obj.TaskToInsert.S_START_LOC}',缁堢偣='{obj.TaskToInsert.S_END_LOC}'"); } + #endregion // 鎻愪氦鏁版嵁搴撴洿鏀� tran.CommitTran(); @@ -84,14 +100,27 @@ } } - public class DbTranTaskObj { - public LocCntrCg Old { get; set; } = null; - public TN_Container ContainerToUpdate { get; set; } = null; - public TN_CG_Detail CgDetailToUpdate { get; set; } = null; - public TN_Loc_Container LocCntrRelToInsert { get; set; } = null; + public class CreateTaskObj { + + #region 璧风偣璐т綅 / 缁堢偣璐т綅 / 浠诲姟 public TN_Location StartLocToUpdate { get; set; } = null; public TN_Location EndLocToUpdate { get; set; } = null; public TN_Task TaskToInsert { get; set; } = null; + #endregion + + #region 瀹瑰櫒缁戝畾淇℃伅 ( 鏃�/ 鏂�) + /// <summary> + /// [ 鏃�] 瀹瑰櫒缁戝畾淇℃伅 ( 璐т綅 / 璐т綅瀹瑰櫒 / 瀹瑰櫒璐у搧 ) + /// </summary> + public LocCntrCg Old { get; set; } = null; + /// <summary> + /// [ 鏂�] 瀹瑰櫒缁戝畾淇℃伅 ( 璐т綅 / 璐т綅瀹瑰櫒 / 瀹瑰櫒璐у搧 ) + /// </summary> + public LocCntrCg New { get; set; } = null; + #endregion + + public TN_Container ContainerToUpdate { get; set; } = null; + public TN_CG_Detail CgDetailToUpdate { get; set; } = null; } } -- Gitblit v1.9.1