/// <summary> /// 保存 /// </summary> /// <param name="paramHead">UIModel</param> /// <returns></returns> public bool SaveDetailDS(WarehouseManagerUIModel paramHead, SkyCarBindingList <WarehouseBinManagerUIModel, MDLPIS_WarehouseBin> paramWarehouseBinList) { //服务端检查 if (!ServerCheck(paramHead)) { return(false); } #region 准备数据 #region 仓库 //将UIModel转为TBModel var argsWarehouse = paramHead.ToTBModelForSaveAndDelete <MDLPIS_Warehouse>(); //判断主键是否被赋值 if (string.IsNullOrEmpty(paramHead.WH_ID)) { argsWarehouse.WH_ID = Guid.NewGuid().ToString(); argsWarehouse.WH_CreatedBy = LoginInfoDAX.UserName; argsWarehouse.WH_CreatedTime = BLLCom.GetCurStdDatetime(); } argsWarehouse.WH_UpdatedBy = LoginInfoDAX.UserName; argsWarehouse.WH_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion #region 仓位 //添加的仓位 if (paramWarehouseBinList != null && paramWarehouseBinList.InsertList != null && paramWarehouseBinList.InsertList.Count > 0) { foreach (var loopDetailItem in paramWarehouseBinList.InsertList) { loopDetailItem.WHB_WH_ID = argsWarehouse.WH_ID ?? argsWarehouse.WHERE_WH_ID; loopDetailItem.WHB_CreatedBy = LoginInfoDAX.UserName; loopDetailItem.WHB_CreatedTime = BLLCom.GetCurStdDatetime(); loopDetailItem.WHB_UpdatedBy = LoginInfoDAX.UserName; loopDetailItem.WHB_UpdatedTime = BLLCom.GetCurStdDatetime(); } } #endregion #endregion #region 带事务的保存 try { DBManager.BeginTransaction(DBCONFIG.Coeus); #region 保存仓库 var saveWarehouseResult = _bll.Save(argsWarehouse, argsWarehouse.WH_ID); if (!saveWarehouseResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_Warehouse }); return(false); } #endregion #region 保存仓位 var saveWarehouseBinResult = _bll.UnitySave(paramWarehouseBinList); if (!saveWarehouseBinResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_WarehouseBin }); return(false); } #endregion DBManager.CommitTransaction(DBCONFIG.Coeus); } catch (Exception ex) { DBManager.RollBackTransaction(DBCONFIG.Coeus); //保存[仓库]信息发生异常 ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(), ex.Message, "", null); return(false); } //将最新数据回写给DetailDS CopyModel(argsWarehouse, paramHead); #endregion #region 刷新缓存 //刷新仓库缓存 var resultWarehouseList = CacheDAX.Get(CacheDAX.ConfigDataKey.Warehouse) as List <MDLPIS_Warehouse>; List <MDLPIS_Warehouse> newWarehouseList = new List <MDLPIS_Warehouse>(); if (resultWarehouseList != null) { newWarehouseList = resultWarehouseList; if (resultWarehouseList.All(x => x.WH_ID != argsWarehouse.WH_ID && x.WH_Name != argsWarehouse.WH_Name)) { newWarehouseList.Add(argsWarehouse); CacheDAX.Add(CacheDAX.ConfigDataKey.Warehouse, newWarehouseList, true); } } else { newWarehouseList.Add(argsWarehouse); CacheDAX.Add(CacheDAX.ConfigDataKey.Warehouse, newWarehouseList, true); } //刷新仓位缓存 if (paramWarehouseBinList == null) { return(true); } var resultWarehouseBinList = CacheDAX.Get(CacheDAX.ConfigDataKey.WarehouseBin) as List <MDLPIS_WarehouseBin>; List <MDLPIS_WarehouseBin> newWarehouseBinList = new List <MDLPIS_WarehouseBin>(); if (resultWarehouseBinList != null) { newWarehouseBinList = resultWarehouseBinList; if (paramWarehouseBinList.InsertList != null && paramWarehouseBinList.InsertList.Count > 0) { foreach (var loopInsertBin in paramWarehouseBinList.InsertList) { if (resultWarehouseBinList.All(x => x.WHB_ID != loopInsertBin.WHB_ID && x.WHB_Name != loopInsertBin.WHB_Name)) { var tempWarehouseBin = new MDLPIS_WarehouseBin(); _bll.CopyModel(loopInsertBin, tempWarehouseBin); newWarehouseBinList.Add(tempWarehouseBin); CacheDAX.Add(CacheDAX.ConfigDataKey.WarehouseBin, newWarehouseBinList, true); } } } if (paramWarehouseBinList.DeleteList != null && paramWarehouseBinList.DeleteList.Count > 0) { //待移除的仓位 List <MDLPIS_WarehouseBin> removeWarehouseBinList = new List <MDLPIS_WarehouseBin>(); foreach (var loopWarehouseBin in newWarehouseBinList) { var deleteWarehouseBin = paramWarehouseBinList.DeleteList.FirstOrDefault(x => x.WHB_ID == loopWarehouseBin.WHB_ID); if (deleteWarehouseBin != null) { removeWarehouseBinList.Add(loopWarehouseBin); } } foreach (var loopWarehouseBin in removeWarehouseBinList) { newWarehouseBinList.Remove(loopWarehouseBin); } } } else { var tempWarehouseBinList = new List <MDLPIS_WarehouseBin>(); _bll.CopyModelList(paramWarehouseBinList.InsertList, tempWarehouseBinList); newWarehouseBinList.AddRange(tempWarehouseBinList); CacheDAX.Add(CacheDAX.ConfigDataKey.WarehouseBin, newWarehouseBinList, true); } #endregion return(true); }
/// <summary> /// 删除仓库 /// </summary> public override void DeleteAction() { #region 准备数据 //待删除的仓库列表 List<MDLPIS_Warehouse> deleteWarehouseList = new List<MDLPIS_Warehouse>(); //待删除的仓位列表 List<MDLPIS_WarehouseBin> deleteWarehouseBinList = new List<MDLPIS_WarehouseBin>(); if (tabControlFull.Tabs[SysConst.EN_DETAIL].Selected) { #region 详情删除 #region 验证 if (string.IsNullOrEmpty(txtWH_ID.Text.Trim())) { //选择要删除的数据 MessageBoxs.Show(Trans.PIS, this.ToString(), MsgHelp.GetMsg(MsgCode.W_0006, new object[] { SystemTableEnums.Name.PIS_Warehouse, SystemActionEnum.Name.DELETE }), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //验证仓库是否已被使用 StringBuilder warehouseIDs = new StringBuilder(); warehouseIDs.Append(SysConst.Semicolon_DBC + txtWH_ID.Text + SysConst.Semicolon_DBC); //已被使用的仓库 List<MDLPIS_Warehouse> usedWarehouseList = new List<MDLPIS_Warehouse>(); _bll.QueryForList(SQLID.PIS_WarehouseManager_SQL01, new MDLPIS_Warehouse { WHERE_WH_ID = warehouseIDs.ToString() }, usedWarehouseList); if (usedWarehouseList.Count > 0) { //仓库已经被使用,不能删除 MessageBoxs.Show(Trans.PIS, this.ToString(), MsgHelp.GetMsg(MsgCode.W_0007, new object[] { txtWH_Name.Text, MsgParam.APPLY, SystemActionEnum.Name.DELETE }), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //确认删除操作 DialogResult dialogResult = MessageBoxs.Show(Trans.PIS, this.ToString(), MsgHelp.GetMsg(MsgCode.W_0012), MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dialogResult != DialogResult.OK) { return; } #endregion MDLPIS_Warehouse deleteWarehouse = new MDLPIS_Warehouse() { WHERE_WH_ID = txtWH_ID.Text.Trim() }; deleteWarehouseList.Add(deleteWarehouse); foreach (var loopWarehouseBin in _warehouseBinList) { MDLPIS_WarehouseBin deleteWarehouseBin = new MDLPIS_WarehouseBin() { WHERE_WHB_ID = loopWarehouseBin.WHB_ID, }; deleteWarehouseBinList.Add(deleteWarehouseBin); } #endregion } else { #region 列表删除 #region 验证 gdGrid.UpdateData(); var checkedWarehouseList = HeadGridDS.Where(p => p.IsChecked == true).ToList(); if (checkedWarehouseList.Count == 0) { //请至少勾选一条仓库信息进行删除 MessageBoxs.Show(Trans.PIS, this.ToString(), MsgHelp.GetMsg(MsgCode.W_0017, new object[] { SystemTableEnums.Name.PIS_Warehouse, SystemActionEnum.Name.DELETE }), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //验证仓库是否已被使用 StringBuilder warehouseIDs = new StringBuilder(); warehouseIDs.Append(SysConst.Semicolon_DBC); foreach (var loopSelectedItem in checkedWarehouseList) { warehouseIDs.Append(loopSelectedItem.WH_ID + SysConst.Semicolon_DBC); } //已被使用的仓库 List<MDLPIS_Warehouse> usedWarehouseList = new List<MDLPIS_Warehouse>(); _bll.QueryForList(SQLID.PIS_WarehouseManager_SQL01, new MDLPIS_Warehouse { WHERE_WH_ID = warehouseIDs.ToString() }, usedWarehouseList); if (usedWarehouseList.Count > 0) { StringBuilder warehouseName = new StringBuilder(); int i = 0; foreach (var loopWarehouse in usedWarehouseList) { i++; if (i == 1) { warehouseName.Append(loopWarehouse.WH_Name); } else { warehouseName.Append(SysConst.Comma_DBC + loopWarehouse.WH_Name); } } //仓库已经被使用,不能删除 MessageBoxs.Show(Trans.PIS, this.ToString(), MsgHelp.GetMsg(MsgCode.W_0007, new object[] { warehouseName, MsgParam.APPLY, SystemActionEnum.Name.DELETE }), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //确认删除 DialogResult dialogResult = MessageBoxs.Show(Trans.PIS, this.ToString(), MsgHelp.GetMsg(MsgCode.W_0013, new object[] { checkedWarehouseList.Count }), MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dialogResult != DialogResult.OK) { return; } #endregion _bll.CopyModelList(checkedWarehouseList, deleteWarehouseList); string warehouseIdStr = string.Empty; foreach (var loopSelectedItem in deleteWarehouseList) { if (string.IsNullOrEmpty(loopSelectedItem.WH_ID)) { continue; } loopSelectedItem.WHERE_WH_ID = loopSelectedItem.WH_ID; warehouseIdStr += loopSelectedItem.WH_ID + SysConst.Semicolon_DBC; } //根据仓库ID查询仓位列表 _bll.QueryForList(SQLID.PIS_WarehouseManager_SQL03, warehouseIdStr, deleteWarehouseBinList); #endregion } #endregion #region 删除数据 if (deleteWarehouseList.Count > 0) { var deleteWarehouseResult = _bll.DeleteWarehouseAndBin(deleteWarehouseList, deleteWarehouseBinList); if (!deleteWarehouseResult) { //删除失败 MessageBoxs.Show(Trans.PIS, this.ToString(), _bll.ResultMsg, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //删除成功 MessageBoxs.Show(Trans.PIS, this.ToString(), MsgHelp.GetMsg(MsgCode.I_0001, new object[] { SystemActionEnum.Name.DELETE }), MessageBoxButtons.OK, MessageBoxIcon.Information); } #endregion //4.清空【详情】画面数据 InitializeDetailTabControls(); //刷新列表 RefreshList(true); //4.将DetailDS数据赋值给【详情】Tab内的对应控件 SetDetailDSToCardCtrls(); //将最新的值Copy到初始UIModel this.AcceptUIModelChanges(); }