/// <summary> /// 订单优化2010-07-07 /// </summary> /// <param name="orderDate"></param> /// <param name="batchNo"></param> public void GenOrderSchedule(string orderDate, int batchNo) { using (THOK.Util.PersistentManager pm = new THOK.Util.PersistentManager()) { OrderDao orderDao = new OrderDao(); ChannelDao channelDao = new ChannelDao(); OrderScheduleDao orderScheduleDao = new OrderScheduleDao(); SupplyDao supplyDao = new SupplyDao(); OrderOptimize orderSchedule = new OrderOptimize(); SysParameterDao parameterDao = new SysParameterDao(); Dictionary<string, string> parameter = parameterDao.FindParameters(); LineScheduleDao lineDao = new LineScheduleDao(); DataTable lineTable = lineDao.FindAllLine(orderDate, batchNo).Tables[0]; foreach (DataRow lineRow in lineTable.Rows) { string lineCode = lineRow["LINECODE"].ToString(); //查询订单主表 DataTable masterTable = orderDao.FindTmpMaster(orderDate, batchNo, lineCode); //查询订单明细表 DataTable orderTable = orderDao.FindTmpDetail(orderDate, batchNo, lineCode); //查询分拣烟道表 DataTable channelTable = channelDao.FindChannelSchedule(orderDate, batchNo, lineCode, Convert.ToInt32(parameter["RemainCount"])).Tables[0]; int sortNo = 1; int currentCount = 0; int totalCount = masterTable.Rows.Count; foreach (DataRow masterRow in masterTable.Rows) { DataRow[] orderRows = null; //查询当前订单明细 orderRows = orderTable.Select(string.Format("SORTNO = '{0}'", masterRow["SORTNO"]), "CHANNELGROUP, CHANNELCODE"); DataSet ds = orderSchedule.Optimize(masterRow, orderRows, channelTable, ref sortNo); orderScheduleDao.SaveOrder(ds); supplyDao.InsertSupply(ds.Tables["SUPPLY"], lineCode, orderDate, batchNo); if (OnSchedule != null) OnSchedule(this, new ScheduleEventArgs(5, "正在优化" + lineRow["LINECODE"].ToString() + "分拣线订单", ++currentCount, totalCount)); } channelDao.Update(channelTable); } LineInfoDao lineDao1 = new LineInfoDao(); DataTable lineTable1 = lineDao1.GetAvailabeLine("3").Tables[0]; foreach (DataRow lineRow in lineTable1.Rows) { string lineCode = lineRow["LINECODE"].ToString(); //查询烟道信息表 DataTable channelTable = channelDao.FindChannelSchedule(orderDate, batchNo, lineCode, Convert.ToInt32(parameter["RemainCount"])).Tables[0]; //查询订单主表 DataTable masterTable = orderDao.FindOrderMaster(orderDate, batchNo, lineCode).Tables[0]; //查询订单明细表 DataTable orderTable = orderDao.FindOrderDetail(orderDate, batchNo, lineCode).Tables[0]; int sortNo = 1; int currentCount = 0; int totalCount = masterTable.Rows.Count; foreach (DataRow masterRow in masterTable.Rows) { DataRow[] orderRows = null; //查询当前订单明细 orderRows = orderTable.Select(string.Format("ORDERID = '{0}'", masterRow["ORDERID"]), "CIGARETTECODE"); DataSet ds = orderSchedule.OptimizeUseWholePiecesSortLine(masterRow, orderRows, channelTable, ref sortNo); orderScheduleDao.SaveOrder(ds); if (OnSchedule != null) OnSchedule(this, new ScheduleEventArgs(5, "正在优化" + lineRow["LINECODE"].ToString() + "分拣线订单", ++currentCount, totalCount)); } channelDao.UpdateQuantity(channelTable,false); } } }
/// <summary> /// 订单拆分2010-07-05 /// </summary> /// <param name="orderDate"></param> /// <param name="batchNo"></param> public void GenSplitOrder(string orderDate, int batchNo) { using (THOK.Util.PersistentManager pm = new THOK.Util.PersistentManager()) { OrderDao orderDao = new OrderDao(); ChannelDao channelDao = new ChannelDao(); OrderScheduleDao orderScheduleDao = new OrderScheduleDao(); LineScheduleDao lineDao = new LineScheduleDao(); OrderSplitOptimize orderSchedule = new OrderSplitOptimize(); THOK.AS.Dao.SysParameterDao parameterDao = new SysParameterDao(); Dictionary<string, string> parameter = parameterDao.FindParameters(); //查询分拣线表 DataTable lineTable = lineDao.FindAllLine(orderDate, batchNo).Tables[0]; //清理临时表 orderScheduleDao.ClearSplitOrder(); LineInfoDao lineDao1 = new LineInfoDao(); DataTable lineTable1 = lineDao1.GetAvailabeLine("3").Tables[0]; bool isUseWholePiecesSortLine = lineTable1.Rows.Count > 0; foreach (DataRow lineRow in lineTable.Rows) { string lineCode = lineRow["LINECODE"].ToString(); //查询烟道信息表 DataTable channelTable = channelDao.FindChannelSchedule(orderDate, batchNo, lineCode, Convert.ToInt32(parameter["RemainCount"])).Tables[0]; //查询订单主表 DataTable masterTable = orderDao.FindOrderMaster(orderDate, batchNo, lineCode).Tables[0]; //查询订单明细表 DataTable orderTable = orderDao.FindOrderDetail(orderDate, batchNo, lineCode).Tables[0]; DataTable orderDetail = null; HashTableHandle hashTableHandle = new HashTableHandle(orderTable); int sortNo = 1; int currentCount = 0; int totalCount = masterTable.Rows.Count; orderSchedule.moveToMixChannelProducts.Clear(); foreach (DataRow masterRow in masterTable.Rows) { DataRow[] orderRows = null; orderDetail = hashTableHandle.Select("ORDERID", masterRow["ORDERID"]); orderRows = orderDetail.Select(string.Format("ORDERID = '{0}'", masterRow["ORDERID"]), "QUANTITY"); DataSet ds = orderSchedule.Optimize(masterRow, orderRows, channelTable, lineCode, ref sortNo, parameter,isUseWholePiecesSortLine); orderScheduleDao.SaveSplitOrder(ds); if (OnSchedule != null) OnSchedule(this, new ScheduleEventArgs(4, "正在优化" + lineRow["LINECODE"].ToString() + "分拣线订单", ++currentCount, totalCount)); } channelDao.UpdateQuantity(channelTable, Convert.ToBoolean(parameter["IsUseBalance"])); } } }