/// <summary> /// 更新Dict[709]中MapId1对应的行。若Dict【709】没有对应行则返回 /// </summary> /// <param name="pMapClassId">接口类型</param> /// <param name="pEid">主单据Id</param> /// <param name="pUpdateOk">是否同步成功</param> /// <param name="pDel">是否删除</param> /// <param name="pfList">返回操作失败的实体列表,若失败则返回Count=0的列表实体</param> /// <param name="pWcfError">返回WCF操作结果</param> /// <param name="pMsg">返回错误描述</param> /// <returns>若成功则返回成功操作的行数;否则返回TError.Wcf_RunError</returns> static public int UpdateRowV_Order(TDict709_Value pMapClassId, string pEid, TDict285_Values pUpdateOk, TDict285_Values pDel , out List <Product_WMS_Interface> pfList, out int pWcfError, out string pMsg) { try { int rslt = 0; List <Product_WMS_Interface> eList = null; // 取出主单据Id所包含的所有子单据 var order = CWms.CWmsDataFactory.GetCWmsOrder(Dict709ToMoc(pMapClassId), pEid); // 获取待更新的实体列表 eList = GetVPwiEntities(pMapClassId, Dict709ToMoc(pMapClassId), order, pUpdateOk, pDel); // 更新 rslt = UpdateRowV_Order(eList, out pfList, out pWcfError, out pMsg); return(rslt); } catch (Exception ex) { pfList = new List <Product_WMS_Interface>(1); pWcfError = TError.WCF_RunError.Int(); pMsg = ex.Message; var ret = new ThirdResult <List <object> >(""); if (null != ex.InnerException) { ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message)); } ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace)); ret.End(); return(TError.WCF_RunError.Int()); } }
/// <summary> /// 更新Dict[709]中MapId1对应的行。若Dict【709】没有对应行则添加。 /// 若成功则返回成功操作的行数;否则返回TError.Wcf_RunError /// </summary> /// <param name="pMapClassId">接口类型</param> /// <param name="pEid">主单据Id</param> /// <param name="pUpdateOk">是否同步成功</param> /// <param name="pDel">是否删除</param> /// <param name="pfList">返回操作失败的实体列表,若失败则返回Count=0的列表实体</param> /// <param name="pWcfError">返回WCF操作结果</param> /// <param name="pMsg">返回错误描述</param> /// <returns>若成功则返回成功操作的行数;否则返回TError.Wcf_RunError</returns> static public int UpdateRowVA_Order(TDict709_Value pMapClassId, string pEid, TDict285_Values pUpdateOk, TDict285_Values pDel , out List <Product_WMS_Interface> pfList, out int pWcfError, out string pMsg) { try { int rslt = 0; List <Product_WMS_Interface> eList = null; // 取出主单据Id所包含的所有子单据 var order = CWms.CWmsDataFactory.GetCWmsOrder(Dict709ToMoc(pMapClassId), pEid); // 获取待更新的实体列表 eList = GetVPwiEntities(pMapClassId, Dict709ToMoc(pMapClassId), order, pUpdateOk, pDel); // 更新 rslt = UpdateRowVA_Order(eList, out pfList, out pWcfError, out pMsg); return(rslt); } catch (Exception ex) { pfList = new List <Product_WMS_Interface>(1); pWcfError = TError.WCF_RunError.Int(); pMsg = ex.Message; C_WMS.Data.Utility.MyLog.Instance.Error(ex, "{0}发生异常", System.Reflection.MethodBase.GetCurrentMethod().Name); return(TError.WCF_RunError.Int()); } }
} // WmsLogistics GetLogistics() protected int DlgtFunc_RunWCF <TEntity>(Mango.TWCFOperation pOperation, params object[] args) { int err = 0; string msg = string.Empty; int currentIndex = args[0].Int(); bool addOnNotFound = bool.Parse(args[1].ToString()); List <Product_WMS_Interface> pwiList = args[3] as List <Product_WMS_Interface>; string orderId = args[4].ToString(); TDict285_Values isUpdateOK = (TDict285_Values)args[5]; TDict285_Values isDel = (TDict285_Values)args[6]; var acb_args = new object[] { currentIndex, addOnNotFound, new DefDlgt_RunWCF <Product_WMS_Interface>(DlgtFunc_RunWCF <Product_WMS_Interface>), pwiList.ToList() }; if (!addOnNotFound && TWCFOperation.EUpdate == pOperation) { err = Update709(orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg);// Dict709Handle.UpdateRow_Order(TDict709_Value.EEntryOrder, orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg); } else if (addOnNotFound && TWCFOperation.EUpdateA == pOperation) { err = UpdateA709(orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg); // Dict709Handle.UpdateRowA_Order(TDict709_Value.EEntryOrder, orderId, pwiList[currentIndex].MapId2.Int().ToString(), isUpdateOK, isDel, out msg); } else { throw new NotSupportedException(""); } return(err); }
virtual protected int UpdateA709(string pEid, string pEsId, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg) { switch (OrderType) { case TCWmsOrderType.EEntryOrder: return(Dict709Handle.UpdateRowA(TDict709_Value.EEntryOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg)); case TCWmsOrderType.EStockoutOrder: return(Dict709Handle.UpdateRowA(TDict709_Value.EExwarehouseOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg)); case TCWmsOrderType.EReturnOrder: return(Dict709Handle.UpdateRowA(TDict709_Value.EReturnOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg)); default: { pMsg = string.Format("{0}.Update709(), unknown order type={1}", GetType(), OrderType); C_WMS.Data.Utility.MyLog.Instance.Warning(pMsg); return(TError.Post_NoChange.Int()); } } }
/// <summary> /// 向Dict[709]中插入一行 /// </summary> /// <param name="pEid">主单据Id</param> /// <param name="pMapClassId">接口类型</param> /// <param name="pEsId">子单据Id</param> /// <param name="pUpdateOk">是否同步成功</param> /// <param name="pDel">是否删除</param> /// <param name="pMsg">返回错误描述</param> /// <returns>返回操作成功的行数,若失败则返回TErrr.WCF_RunError</returns> static public int AddRow_Order(TDict709_Value pMapClassId, string pEid, string pEsId, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg) { try { #region Product_WMS_Interface entity = new Product_WMS_Interface(); Product_WMS_Interface entity = new Product_WMS_Interface(); entity.MapCalssID = pMapClassId.Int(); entity.MapId1 = pEid.Int(); entity.MapId2 = pEsId.Int(); entity.IsUpdateOK = pUpdateOk.Int(); entity.IsDel = pDel.Int(); entity.AddTime = entity.LastTime = DateTime.Now; entity.AddUserid = entity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid; entity.DisOrder = Product_WMS_Interface_Properties.cIntDisorderDefault; #endregion return(AddRow_Order(entity, out pMsg)); } catch (Exception ex) { pMsg = ex.Message; var ret = new ThirdResult <List <object> >(""); if (null != ex.InnerException) { ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message)); } ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace)); ret.End(); return(TError.WCF_RunError.Int()); } }
/// <summary> /// 更新Dict[709]中MapId1对应的行 /// </summary> /// <param name="pMapClassId">接口类型</param> /// <param name="pEid">主单据Id</param> /// <param name="pEsId">子单据Id</param> /// <param name="pUpdateOk">是否同步成功</param> /// <param name="pDel">是否删除</param> /// <param name="pMsg">返回错误描述</param> /// <returns>若成功则返回成功操作的行数;否则返回TError.Wcf_RunError</returns> static public int UpdateRow_Order(TDict709_Value pMapClassId, string pEid, string pEsId, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg) { Product_WMS_Interface entity = new Product_WMS_Interface(); entity.MapCalssID = pMapClassId.Int(); entity.MapId1 = pEid.Int(); entity.MapId2 = pEsId.Int(); entity.IsUpdateOK = pUpdateOk.Int(); entity.IsDel = pDel.Int(); entity.LastTime = DateTime.Now; entity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid; entity.DisOrder = Product_WMS_Interface_Properties.cIntDisorderDefault; int ret = UpdateRow_Order(entity, out pMsg); return(ret); }
/// <summary> /// 更新子出库订单的记录, 若没找到记录则新增一条 /// </summary> /// <param name="pOrderId">主出库单Id</param> /// <param name="pUpdateOk">记录的更新状态,遵照Dict[285]</param> /// <param name="pDel">Dict[285]</param> /// <param name="pCount">返回成功更新的行数</param> /// <param name="pMsg">返回错误描述信息</param> /// <returns>若更新成功则返回操作的行数;其他错误返回TError.WCF_RunError</returns> static public int UpdateRow_StockoutCreate(string pOrderId, TDict285_Values pUpdateOk, TDict285_Values pDel, out int pCount, out string pMsg) { pCount = 0; pMsg = string.Empty; CWmsStockOrder order = null; Product_WMS_Interface tmpEntity = null; try { // get order instance if (null == (order = CWms.CWmsDataFactory.GetCWmsStockoutOrder(pOrderId))) { return(TError.WCF_RunError.Int()); } #region prepare updated rows foreach (var subOrder in order.SubOrders) { // 根据主单据Id和子单据Id找到行 var filter = new List <CommonFilterModel>() { }; // query filter filter.Add(new CommonFilterModel(Product_WMS_Interface_Properties.PropName_MapId1, "=", order.GetId())); filter.Add(new CommonFilterModel(Product_WMS_Interface_Properties.PropName_MapId2, "=", subOrder.Value.GetId())); var wcfPWI = WCF <Product_WMS_Interface> .QueryAll(filter); // query,只取第一页第一条(同一个子单据不应该有2条数据) if (null == wcfPWI || null == wcfPWI.Data) { pCount = TError.WCF_RunError.Int(); pMsg = "WCF返回null异常"; break; } // TODO: 系统异常 else if (0 >= wcfPWI.RetInt) { tmpEntity = new Product_WMS_Interface(); } // 没有找到 else { tmpEntity = wcfPWI.Data[0]; } // 找到了一条 #region 实例赋值并更新 tmpEntity.MapCalssID = TDict709_Value.EExwarehouseOrder.Int(); tmpEntity.MapId1 = (order.MangoOrder as MangoStockouOrder).ProductOutputMainId; tmpEntity.MapId2 = (subOrder.Value.MangoOrder as MangoSubStockoutOrder).ProductOutputId; tmpEntity.IsUpdateOK = pUpdateOk.Int(); tmpEntity.IsDel = pDel.Int(); tmpEntity.LastTime = DateTime.Now; tmpEntity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid; var updateRslt = (0 >= wcfPWI.RetInt) ? WCF <Product_WMS_Interface> .Add(tmpEntity) : WCF <Product_WMS_Interface> .Update(tmpEntity); if (null == updateRslt) { pCount = TError.WCF_RunError.Int(); pMsg = "WCF返回null异常"; break; } // TODO: 系统异常 else { pCount++; pMsg = updateRslt.RETData; } #endregion } #endregion return(pCount); } catch (Exception ex) { var ret = new ThirdResult <List <object> >(""); if (null != ex.InnerException) { ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message)); } ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace)); ret.End(); return(pCount = TError.WCF_RunError.Int()); } }
/// <summary> /// /// </summary> /// <param name="pMapClassId"></param> /// <param name="pMapId1"></param> /// <param name="pMapId2"></param> /// <param name="pIsUpdateOk"></param> /// <param name="pIsDel"></param> /// <param name="wcfError"></param> /// <param name="pMsg"></param> /// <returns></returns> static public Product_WMS_Interface NewPwiEntity(TDict709_Value pMapClassId, string pMapId1, string pMapId2, TDict285_Values pIsUpdateOk, TDict285_Values pIsDel) { try { return(new Product_WMS_Interface() { MapCalssID = pMapClassId.Int(), MapId1 = pMapClassId.Int(), MapId2 = pMapClassId.Int(), IsUpdateOK = pIsUpdateOk.Int(), IsDel = pIsDel.Int(), WMS_InterfaceId = 0, AddTime = DateTime.Now, AddUserid = 0, LastTime = DateTime.Now, UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid, DisOrder = Product_WMS_Interface_Properties.cIntDisorderDefault }); } catch (Exception ex) { C_WMS.Data.Utility.MyLog.Instance.Warning(ex, "{0}.{1}(pMapClassId={2}, pMapId1={3}, pMapId2={4}, pIsUpdateOk={5}, pIsDel={6})发生异常", MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, pMapClassId, pMapId1, pMapId2, pIsUpdateOk, pIsDel); return(null); } }
/// <summary> /// /// </summary> /// <param name="pMapClassId"></param> /// <param name="pMapId1"></param> /// <param name="pMapId2"></param> /// <param name="pUpdateOk"></param> /// <param name="pDel"></param> /// <param name="pMsg"></param> /// <returns></returns> static public int UpdateRowA(TDict709_Value pMapClassId, string pMapId1, string pMapId2, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg) { throw new NotFiniteNumberException(); }
/// <summary> /// 根据单据类实体创建并返回Product_WMS_Interface实体 /// </summary> /// <param name="pMapClassId">Dict[709].pMapClassId</param> /// <param name="pCate">单据类型</param> /// <param name="pOrder">单据实体</param> /// <param name="pUpdateOk">是否同步成功</param> /// <param name="pDel">是否删除</param> /// <returns>若成功则返回Product_WMS_Interface实体;否则返回null</returns> static protected List <Product_WMS_Interface> GetVPwiEntities(TDict709_Value pMapClassId, TCWmsOrderCategory pCate, CWmsOrderBase pOrder, TDict285_Values pUpdateOk, TDict285_Values pDel) { List <Product_WMS_Interface> eList = null; if (null == pOrder) { return(eList); } try { eList = new List <Product_WMS_Interface>(1); #region 遍历子单据,创建并添加Product_WMS_Interface实体 foreach (var so in pOrder.SubOrders) { Product_WMS_Interface entity = new Product_WMS_Interface(); entity.MapCalssID = pMapClassId.Int(); entity.IsUpdateOK = pUpdateOk.Int(); entity.IsDel = pDel.Int(); entity.LastTime = DateTime.Now; entity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid; entity.DisOrder = Product_WMS_Interface_Properties.cIntDisorderDefault; switch (pCate) { case TCWmsOrderCategory.EEntryOrder: { entity.MapId1 = (pOrder.MangoOrder as MangoEntryOrder).ProductInputMainId; entity.MapId2 = (so.Value.MangoOrder as MangoSubEntryOrder).ProductInputId; entity.AddTime = (so.Value.MangoOrder as MangoSubEntryOrder).AddTime; entity.AddUserid = (so.Value.MangoOrder as MangoSubEntryOrder).AddUserid; eList.Add(entity); break; } case TCWmsOrderCategory.EExwarehouseOrder: { entity.MapId1 = (pOrder.MangoOrder as MangoStockouOrder).ProductOutputMainId; entity.MapId2 = (so.Value.MangoOrder as MangoSubStockoutOrder).ProductOutputId; entity.AddTime = (so.Value.MangoOrder as MangoSubStockoutOrder).AddTime; entity.AddUserid = (so.Value.MangoOrder as MangoSubStockoutOrder).AddUserid; eList.Add(entity); break; } case TCWmsOrderCategory.EReturnOrder: { entity.MapId1 = (pOrder.MangoOrder as MangoReturnOrder).TuiHuoMainID; entity.MapId2 = (so.Value.MangoOrder as MangoSubReturnOrder).ZiTuihuoID; entity.AddTime = (so.Value.MangoOrder as MangoSubReturnOrder).AddTime; entity.AddUserid = (so.Value.MangoOrder as MangoSubReturnOrder).AddUserid; eList.Add(entity); break; } default: { break; } } } #endregion return(eList); } catch (Exception ex) { var ret = new ThirdResult <List <object> >(""); if (null != ex.InnerException) { ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message)); } ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace)); ret.End(); return(null); } }
/// <summary> /// 更新单据pMangoOrder在Dict709中对应的行的isUpdateOk和isDel. 当pAddOnNotFound为true时,如果Dict709中没有对应的行则插入新行;当pAddOnNotFound为false时,如果Dict709中没有对应的行则操作失败. /// 该方法返回WCF的执行结果或TError值 /// </summary> /// <param name="pOrder">待更新的Mis实体对应的单据对象</param> /// <param name="pIsUpdateOk">Dict709.IsUpdateOK字段</param> /// <param name="pIsDel">Dict709.IsDel字段</param> /// <param name="pAddOnNotFound">当pAddOnNotFound为true时,如果Dict709中没有对应的行则插入新行;当pAddOnNotFound为false时,如果Dict709中没有对应的行则操作失败.</param> /// <returns></returns> virtual public int UpdateDict709(CWmsOrderBase <TOrderType, TMangoType, TWmsType, TSubOrderType, THandlerType> pOrder, TDict285_Values pIsUpdateOk, TDict285_Values pIsDel, bool pAddOnNotFound) { if (null != AreArray) { Array.Clear(AreArray, 0, AreArray.Length); } AreArray = pOrder.SubOrders.Select(x => new AutoResetEvent(false)).ToArray(); var args = new object[] { 0, // 0st pAddOnNotFound, // 1st new DefDlgt_RunWCF <Product_WMS_Interface>(DlgtFunc_RunWCF <Product_WMS_Interface>), // 2nd MangoFactory.GetV_PwiList(pOrder.MapClassId, pOrder.Id, pOrder.SubOrders.Keys), // 3rd pOrder.Id, // 4th pIsUpdateOk, // 5th pIsDel // 6th }; var dlgt = args[2] as DefDlgt_RunWCF <Product_WMS_Interface>;// (DlgtFunc_RunWCF<Product_WMS_Interface>); dlgt.BeginInvoke((pAddOnNotFound) ? TWCFOperation.EUpdateA : TWCFOperation.EUpdate, args, Acb_RunWCF, args); WaitHandle.WaitAll(AreArray); return(-1); }
/// <summary> /// Update IsUpdateOK of row(s) in Dict709 according to result of transaction. /// return count of affected rows -or- -1/TError if failure. /// </summary> /// <param name="pMapClassId">MapClassId</param> /// <param name="pMapIds">a set of MapId1</param> /// <param name="pIsUpdateOK">value to be updated for IsUpdateOK</param> /// <param name="pIsDel">value to be updated for IsDel</param> /// <returns></returns> virtual protected int Update709(TDict709_Value pMapClassId, List <string> pMapIds, TDict285_Values pIsUpdateOK, TDict285_Values pIsDel) { throw new NotImplementedException(string.Format("{0}.Update709(TDict709_Value, List<string>, TDict285, TDict285), should be implemented with it's inherits.", GetType())); }