/// <summary> /// 查询同步状态表上报 /// </summary> public string FindSynchroInfo() { string tag = "上报同步状态表成功!"; using (PersistentManager dbpm = new PersistentManager("ZYDB2Connection")) { UploadDao dao = new UploadDao(); dao.SetPersistentManager(dbpm); DataTable synchroTable = this.QuerySynchroInfo(); if (synchroTable.Rows.Count > 0) { try { dbpm.BeginTransaction(); dao.InsertSynchro(synchroTable); this.UpdateSyachro(""); dbpm.Commit(); } catch (Exception exp) { dbpm.Rollback(); throw new Exception(exp.Message); } } else { tag = "没有同步状态表数据可上报!"; } } return(tag); }
/// <summary> /// 查询分拣订单主表上报 /// </summary> public string FindIordMasterOrder() { string tag = "上报分拣订单主表成功!"; using (PersistentManager dbpm = new PersistentManager("ZYDB2Connection")) { UploadDao dao = new UploadDao(); dao.SetPersistentManager(dbpm); DataTable orderMasterTable = this.QueryIordMasterOrder(); if (orderMasterTable.Rows.Count > 0) { try { dbpm.BeginTransaction(); dao.InsertIordOrder(orderMasterTable); this.UpdateOrderMaster(""); dbpm.Commit(); } catch (Exception exp) { dbpm.Rollback(); throw new Exception(exp.Message); } } else { tag = "没有新的分拣订单主表要上报!"; } } return(tag); }
/// <summary> /// 查询仓库入库单据细表上报 /// </summary> public string FindInDetailBill() { string tag = "上报仓库入库单据细表成功!"; using (PersistentManager dbpm = new PersistentManager("ZYDB2Connection")) { UploadDao dao = new UploadDao(); dao.SetPersistentManager(dbpm); DataTable inDetailTable = this.QueryInDetailBill(); if (inDetailTable.Rows.Count > 0) { try { dbpm.BeginTransaction(); dao.InsertInDetailBill(inDetailTable); this.UpdateInDetail(""); dbpm.Commit(); } catch (Exception exp) { dbpm.Rollback(); throw new Exception(exp.Message); } } else { tag = "没有新的仓库入库细表信息要上报!"; } } return(tag); }
/// <summary> /// 查询出库业务单据表上报 /// </summary> public string FindOutBusiBill() { string tag = "上报仓库出库业务单据表成功!"; using (PersistentManager dbpm = new PersistentManager("ZYDB2Connection")) { UploadDao dao = new UploadDao(); dao.SetPersistentManager(dbpm); DataTable outBusiTable = this.QueryOutBusiBill(); if (outBusiTable.Rows.Count > 0) { try { dbpm.BeginTransaction(); dao.InsertOutBusiBill(outBusiTable); this.UpdateOutBusi(""); dbpm.Commit(); } catch (Exception exp) { dbpm.Rollback(); throw new Exception(exp.Message); } } else { tag = "没有新的仓库出库业务单据表要上报!"; } } return(tag); }
/// <summary> /// 查询卷烟信息表上报 /// </summary> public string FindProduct() { string tag = "上报卷烟信息表成功!"; using (PersistentManager dbpm = new PersistentManager("ZYDB2Connection")) { UploadDao dao = new UploadDao(); dao.SetPersistentManager(dbpm); DataTable brandTable = this.QueryProductInfo(); if (brandTable.Rows.Count > 0) { try { dbpm.BeginTransaction(); dao.InsertProduct(brandTable); this.UpdateProduct(); dbpm.Commit(); } catch (Exception exp) { dbpm.Rollback(); throw new Exception(exp.Message); } } else { tag = "没有新的卷烟信息要上报!"; } } return(tag); }
/// <summary> /// 查询业务库存表表上报 /// </summary> public string FindBusiStock() { string tag = "上报业务库存表成功!"; using (PersistentManager dbpm = new PersistentManager("ZYDB2Connection")) { UploadDao dao = new UploadDao(); dao.SetPersistentManager(dbpm); DataTable busiStockTable = this.QueryBusiStock(); if (busiStockTable.Rows.Count > 0) { try { dbpm.BeginTransaction(); dao.InsertBustStock(busiStockTable); this.UpdateBusiStock(""); dbpm.Commit(); } catch (Exception exp) { dbpm.Rollback(); throw new Exception(exp.Message); } } else { tag = "没有新的业务库存信息要上报!"; } } return(tag); }
/// <summary> /// 上报国家局分拣数据主表 /// </summary> /// <param name="masterTable"></param> public void UploadSortingOrderMaster(DataTable masterTable) { //上报分拣主表数据 using (PersistentManager pm = new PersistentManager("DB2Connection")) { UploadSortingDao udao = new UploadSortingDao(); udao.SetPersistentManager(pm); try { pm.BeginTransaction(); foreach (DataRow row in masterTable.Rows) { string sql = string.Format("INSERT INTO DWV_IORD_ORDER(ORDER_ID,ORG_CODE,SALE_REG_CODE,ORDER_DATE,ORDER_TYPE," + "CUST_CODE,CUST_NAME,QUANTITY_SUM,AMOUNT_SUM,DETAIL_NUM,ISACTIVE,UPDATE_DATE,IS_IMPORT)VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}',{7},{8},{9},'{10}','{11}','{12}')", row["ORDER_ID"], row["ORG_CODE"], row["SALE_REG_CODE"], Convert.ToDateTime(row["ORDER_DATE"]).ToString("yyyyMMdd"), row["ORDER_TYPE"], row["CUST_CODE"], row["CUST_NAME"], row["QUANTITY_SUM"], row["AMOUNT_SUM"], row["DETAIL_NUM"], row["ISACTIVE"], DateTime.Now.ToString("yyyyMMddHHmmss"), row["IS_IMPORT"]); udao.setData(sql); } pm.Commit(); } catch (Exception exp) { pm.Rollback(); throw exp; } } }
/// <summary> /// 上报国家局分拣数据细表 /// </summary> /// <param name="detailTable"></param> public void UploadSortingOrderDetail(DataTable detailTable) { //上报分拣细表数据 using (PersistentManager pm = new PersistentManager("DB2Connection")) { UploadSortingDao udao = new UploadSortingDao(); udao.SetPersistentManager(pm); try { pm.BeginTransaction(); foreach (DataRow row in detailTable.Rows) { string sql = string.Format("INSERT INTO DWV_IORD_ORDER_DETAIL(ORDER_DETAIL_ID,ORDER_ID,BRAND_CODE,BRAND_NAME,BRAND_UNIT_NAME," + "QTY_DEMAND,QUANTITY,PRICE,AMOUNT,IS_IMPORT)VALUES('{0}','{1}','{2}','{3}','{4}',{5},{6},{7},{8},'{9}')", row["ORDER_DETAIL_ID"], row["ORDER_ID"], row["BRAND_CODE"], row["BRAND_NAME"], row["BRAND_UNIT_NAME"], row["QTY_DEMAND"], row["QUANTITY"], row["PRICE"], row["AMOUNT"], row["IS_IMPORT"]); udao.setData(sql); } pm.Commit(); } catch (Exception exp) { pm.Rollback(); throw exp; } } }
private void StockInRequest(string cigaretteCode, int quantity, int stockRemainQuantity) { using (PersistentManager pm = new PersistentManager()) { StockInBatchDao stockInBatchDao = new StockInBatchDao(); StockInDao stockInDao = new StockInDao(); ChannelDao channelDao = new ChannelDao(); stockInBatchDao.SetPersistentManager(pm); stockInDao.SetPersistentManager(pm); channelDao.SetPersistentManager(pm); pm.BeginTransaction(); try { DataTable cigaretteTable = channelDao.FindChannelForCigaretteCode(cigaretteCode); if (cigaretteTable.Rows.Count != 0) { DataRow row = cigaretteTable.Rows[0]; bool isStockIn = row["ISSTOCKIN"].ToString() == "1" ? true : false; int batchNo = stockInBatchDao.FindMaxBatchNo() + 1; stockInBatchDao.InsertBatch(batchNo, row["CHANNELCODE"].ToString(), cigaretteCode, row["CIGARETTENAME"].ToString(), quantity, isStockIn ? stockRemainQuantity : 0); int stockInID = stockInDao.FindMaxInID(); for (int i = 1; i <= quantity; i++) { stockInID = stockInID + 1; stockInDao.Insert(stockInID, batchNo, row["CHANNELCODE"].ToString(), cigaretteCode, row["CIGARETTENAME"].ToString(), row["BARCODE"].ToString(), (isStockIn && stockRemainQuantity-- > 0) ? "1" : "0"); } pm.Commit(); try { using (PersistentManager pmWES = new PersistentManager("WESConnection")) { StockInBatchDao stockInBatchDaoWES = new StockInBatchDao(); stockInBatchDaoWES.SetPersistentManager(pmWES); stockInBatchDaoWES.InsertBatch(batchNo, row["CHANNELCODE"].ToString(), cigaretteCode, row["CIGARETTENAME"].ToString(), quantity, isStockIn ? stockRemainQuantity : 0); } } catch (Exception e) { Logger.Error("上传入库计划失败,详情:" + e.Message); } } } catch (Exception ex) { pm.Rollback(); Logger.Error("生成入库计划失败,详情:" + ex.Message); } } }
private bool AddNextSupply(string lineCode, string channelGroup, string channelType, int sortNo) { bool result = false; try { using (PersistentManager pm = new PersistentManager()) { StockOutBatchDao batchDao = new StockOutBatchDao(); SupplyDao supplyDao = new SupplyDao(); StockOutDao outDao = new StockOutDao(); batchDao.SetPersistentManager(pm); supplyDao.SetPersistentManager(pm); outDao.SetPersistentManager(pm); DataTable supplyTable = supplyDao.FindNextSupply(lineCode, channelGroup, channelType, sortNo); if (supplyTable.Rows.Count != 0) { Logger.Info(string.Format("收到补货请求,分拣线 '{0}',烟道组 '{1}',烟道类型 '{2}',流水号 '{3}'", lineCode, channelGroup, channelType, sortNo)); try { pm.BeginTransaction(); int batchNo = batchDao.FindMaxBatchNo() + 1; batchDao.InsertBatch(batchNo, lineCode, channelGroup, channelType, sortNo, supplyTable.Rows.Count); int outID = outDao.FindMaxOutID(); outDao.Insert(outID, supplyTable); pm.Commit(); result = true; Logger.Info("生成出库任务成功"); } catch (Exception e) { Logger.Error("生成出库任务失败,原因:" + e.Message); pm.Rollback(); } } } } catch (Exception e) { Logger.Error("生成出库任务失败,原因:" + e.Message); } return(result); }
private bool AddFirstSupply() { bool result = false; try { using (PersistentManager pm = new PersistentManager()) { StockOutBatchDao batchDao = new StockOutBatchDao(); SupplyDao supplyDao = new SupplyDao(); StockOutDao outDao = new StockOutDao(); batchDao.SetPersistentManager(pm); supplyDao.SetPersistentManager(pm); outDao.SetPersistentManager(pm); DataTable supplyTable = supplyDao.FindFirstSupply(); if (supplyTable.Rows.Count != 0) { try { pm.BeginTransaction(); int batchNo = batchDao.FindMaxBatchNo() + 1; batchDao.InsertBatch(batchNo, "00", "0", "0", 0, supplyTable.Rows.Count); int outID = outDao.FindMaxOutID(); outDao.Insert(outID, supplyTable); pm.Commit(); result = true; Logger.Info("生产第一批次出库任务成功"); } catch (Exception e) { Logger.Error("生成第一批次出库任务失败,原因:" + e.Message); pm.Rollback(); } } } } catch (Exception ee) { Logger.Error("生成第一批次出库任务失败,原因:" + ee.Message); } return(result); }
public void SaveParameter(Dictionary <string, string> parameters) { using (PersistentManager pm = new PersistentManager()) { try { SysSystemParameterDao parameterDao = new SysSystemParameterDao(); pm.BeginTransaction(); foreach (string key in parameters.Keys) { parameterDao.UpdateEntity(key, parameters[key]); } pm.Commit(); } catch { pm.Rollback(); } } }
public void ExechangeChannelUSED(string lineCode, string sourceChannel, string targetChannel) { using (PersistentManager pm = new PersistentManager()) { ChannelDao channelDao = new ChannelDao(); SupplyDao supplyDao = new SupplyDao(); try { pm.BeginTransaction(); DataTable channelTableSource = channelDao.FindChannelUSED(lineCode, sourceChannel); DataTable channelTableTarget = channelDao.FindChannelUSED(lineCode, targetChannel); channelDao.UpdateChannelUSED(lineCode, targetChannel, channelTableSource.Rows[0]["CIGARETTECODE"].ToString(), channelTableSource.Rows[0]["CIGARETTENAME"].ToString(), Convert.ToInt32(channelTableSource.Rows[0]["QUANTITY"]), channelTableSource.Rows[0]["SORTNO"].ToString()); channelDao.UpdateChannelUSED(lineCode, sourceChannel, channelTableTarget.Rows[0]["CIGARETTECODE"].ToString(), channelTableTarget.Rows[0]["CIGARETTENAME"].ToString(), Convert.ToInt32(channelTableTarget.Rows[0]["QUANTITY"]), channelTableTarget.Rows[0]["SORTNO"].ToString()); supplyDao.UpdateChannelUSED(lineCode, sourceChannel, "0000", channelTableTarget.Rows[0]["GROUPNO"].ToString()); supplyDao.UpdateChannelUSED(lineCode, targetChannel, sourceChannel, channelTableSource.Rows[0]["GROUPNO"].ToString()); supplyDao.UpdateChannelUSED(lineCode, "0000", targetChannel, channelTableTarget.Rows[0]["GROUPNO"].ToString()); pm.Commit(); } catch { pm.Rollback(); } } }
/// <summary> /// 清除历史数据,并下载数据。 /// </summary> /// <param name="orderDate"></param> /// <param name="batchNo"></param> public void DownloadData(string orderDate, int batchNo, string dataBase) { try { ProcessState.Status = "PROCESSING"; ProcessState.TotalCount = 15; ProcessState.Step = 1; DateTime dtOrder = DateTime.Parse(orderDate); string historyDate = dtOrder.AddDays(-7).ToShortDateString(); using (PersistentManager pm = new PersistentManager()) { BatchDao batchDao = new BatchDao(); using (PersistentManager ssPM = new PersistentManager(dataBase)) { SalesSystemDao ssDao = new SalesSystemDao(); ssDao.SetPersistentManager(ssPM); try { pm.BeginTransaction(); //AS_BI_BATCH batchDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 1; //AS_SC_CHANNELUSED ChannelScheduleDao csDao = new ChannelScheduleDao(); csDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 2; //AS_SC_LINE LineScheduleDao lsDao = new LineScheduleDao(); lsDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 3; //AS_SC_PALLETMASTER ,AS_SC_ORDER OrderScheduleDao osDao = new OrderScheduleDao(); osDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 4; //AS_I_ORDERMASTER,AS_I_ORDERDETAIL, OrderDao orderDao = new OrderDao(); orderDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 5; //AS_SC_STOCKMIXCHANNEL StockChannelDao scDao = new StockChannelDao(); scDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 6; //AS_SC_SUPPLY SupplyDao supplyDao = new SupplyDao(); supplyDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 7; //AS_SC_HANDLESUPPLY HandleSupplyDao handleSupplyDao = new HandleSupplyDao(); handleSupplyDao.DeleteHistory(historyDate); ProcessState.CompleteCount = 8; ClearSchedule(orderDate, batchNo); ////////////////////////////////////////////////////////////////////////// //下载区域表 AreaDao areaDao = new AreaDao(); DataTable areaTable = ssDao.FindArea(); areaDao.SynchronizeArea(areaTable); ProcessState.CompleteCount = 9; //下载配送线路表 RouteDao routeDao = new RouteDao(); DataTable routeTable = ssDao.FindRoute(); routeDao.SynchronizeRoute(routeTable); ProcessState.CompleteCount = 10; //下载客户表 CustomerDao customerDao = new CustomerDao(); DataTable customerTable = ssDao.FindCustomer(dtOrder); customerDao.SynchronizeCustomer(customerTable); ProcessState.CompleteCount = 11; //下载卷烟表 进行同步 CigaretteDao cigaretteDao = new CigaretteDao(); DataTable cigaretteTable = ssDao.FindCigarette(dtOrder); cigaretteDao.SynchronizeCigarette(cigaretteTable); ProcessState.CompleteCount = 12; //查询已优化过的线路,以进行排除。 string routes = lsDao.FindRoutes(orderDate); //下载订单主表 DataTable masterTable = ssDao.FindOrderMaster(dtOrder, batchNo, routes); orderDao.BatchInsertMaster(masterTable); ProcessState.CompleteCount = 13; //下载订单明细 DataTable detailTable = ssDao.FindOrderDetail(dtOrder, batchNo, routes); orderDao.BatchInsertDetail(detailTable); ProcessState.CompleteCount = 14; pm.Commit(); } catch (Exception e) { pm.Rollback(); throw e; } } } } catch (Exception ee) { ProcessState.Status = "ERROR"; ProcessState.Message = ee.Message; } }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { try { using (PersistentManager pm = new PersistentManager()) { StockOutBatchDao stockOutBatchDao = new StockOutBatchDao(); StockOutDao stockOutDao = new StockOutDao(); StockInDao stockInDao = new StockInDao(); stockOutBatchDao.SetPersistentManager(pm); stockOutDao.SetPersistentManager(pm); stockInDao.SetPersistentManager(pm); try { DataTable outTable = stockOutDao.FindSupply(); DataTable stockInTable = stockInDao.FindStockInForIsInAndNotOut(); if (outTable.Rows.Count > 0) { pm.BeginTransaction(); for (int i = 0; i < outTable.Rows.Count; i++) { DataRow[] stockInRows = stockInTable.Select(string.Format("CIGARETTECODE='{0}' AND STATE ='1' AND ( STOCKOUTID IS NULL OR STOCKOUTID = 0 )", outTable.Rows[i]["CIGARETTECODE"].ToString()), "STOCKINID"); if (stockInRows.Length <= Convert.ToInt32(Context.Attributes["StockInRequestRemainQuantity"]) + 1) { WriteToProcess("StockInRequestProcess", "StockInRequest", outTable.Rows[i]["CIGARETTECODE"].ToString()); } else if (stockInRows.Length > 0 && stockInRows.Length + Convert.ToInt32(stockInRows[0]["STOCKINQUANTITY"]) <= Convert.ToInt32(Context.Attributes["StockInCapacityQuantity"]) + 1) { WriteToProcess("StockInRequestProcess", "StockInRequest", outTable.Rows[i]["CIGARETTECODE"].ToString()); } if (stockInRows.Length > 0) { stockInRows[0]["STOCKOUTID"] = outTable.Rows[i]["STOCKOUTID"].ToString(); outTable.Rows[i]["STATE"] = 1; } else { Logger.Error(string.Format("[{0}] [{1}] 库存不足!", outTable.Rows[i]["CIGARETTECODE"].ToString(), outTable.Rows[i]["CIGARETTENAME"].ToString())); WriteToProcess("LEDProcess", "StockInRequestShow", outTable.Rows[0]["CIGARETTENAME"]); break; } } stockOutDao.UpdateStatus(outTable); stockInDao.UpdateStockOutIdToStockIn(stockInTable); pm.Commit(); Logger.Info("处理出库数据成功。"); } } catch (Exception e) { Logger.Error("处理出库数据失败,原因:" + e.Message); pm.Rollback(); } } } catch (Exception e) { Logger.Error("处理出库数据失败,原因:" + e.Message); } }
/// <summary> /// 清除历史数据,并下载数据。 /// </summary> /// <param name="orderDate"></param> /// <param name="batchNo"></param> public void DownloadData(string orderDate, int batchNo, string dataBase) { try { DateTime dtOrder = DateTime.Parse(orderDate); string historyDate = dtOrder.AddDays(-5).ToShortDateString(); using (PersistentManager pm = new PersistentManager()) { BatchDao batchDao = new BatchDao(); using (PersistentManager ssPM = new PersistentManager(dataBase)) { SalesSystemDao ssDao = new SalesSystemDao(); ssDao.SetPersistentManager(ssPM); try { pm.BeginTransaction(); //AS_BI_BATCH batchDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 1, 14)); } //AS_SC_CHANNELUSED ChannelScheduleDao csDao = new ChannelScheduleDao(); csDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 2, 14)); } //AS_SC_LINE LineScheduleDao lsDao = new LineScheduleDao(); lsDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 3, 14)); } //AS_SC_PALLETMASTER ,AS_SC_ORDER OrderScheduleDao osDao = new OrderScheduleDao(); osDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 4, 14)); } //AS_I_ORDERMASTER,AS_I_ORDERDETAIL, OrderDao orderDao = new OrderDao(); orderDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 5, 14)); } //AS_SC_STOCKMIXCHANNEL StockChannelDao scDao = new StockChannelDao(); scDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 6, 14)); } //AS_SC_SUPPLY SupplyDao supplyDao = new SupplyDao(); supplyDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 7, 14)); } //AS_SC_HANDLESUPPLY HandleSupplyDao handleSupplyDao = new HandleSupplyDao(); handleSupplyDao.DeleteHistory(historyDate); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 8, 14)); } ClearSchedule(orderDate, batchNo); ////////////////////////////////////////////////////////////////////////// //下载区域表 AreaDao areaDao = new AreaDao(); DataTable areaTable = ssDao.FindArea(); areaDao.SynchronizeArea(areaTable); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 9, 14)); } //下载配送线路表 RouteDao routeDao = new RouteDao(); DataTable routeTable = ssDao.FindRoute(); routeDao.SynchronizeRoute(routeTable); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 10, 14)); } //下载客户表 CustomerDao customerDao = new CustomerDao(); DataTable customerTable = ssDao.FindCustomer(dtOrder); customerDao.SynchronizeCustomer(customerTable); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 11, 14)); } //下载卷烟表 进行同步 CigaretteDao cigaretteDao = new CigaretteDao(); DataTable cigaretteTable = ssDao.FindCigarette(dtOrder); cigaretteDao.SynchronizeCigarette(cigaretteTable); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 12, 14)); } //查询已优化过的线路,以进行排除。 string routes = lsDao.FindRoutes(orderDate); //下载订单主表 DataTable masterTable = ssDao.FindOrderMaster(dtOrder, batchNo, routes); orderDao.BatchInsertMaster(masterTable); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 13, 14)); } //下载订单明细 DataTable detailTable = ssDao.FindOrderDetail(dtOrder, batchNo, routes); orderDao.BatchInsertDetail(detailTable); if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(1, "数据清除与下载", 14, 14)); } pm.Commit(); } catch (Exception e) { pm.Rollback(); throw e; } } } } catch (Exception ee) { if (OnSchedule != null) { OnSchedule(this, new ScheduleEventArgs(OptimizeStatus.ERROR, ee.Message)); } throw ee; } }