/// <summary> /// 备货烟道优化2010-07-08 /// </summary> /// <param name="orderDate"></param> /// <param name="batchNo"></param> public void GenStockChannelSchedule(string orderDate, int batchNo) { using (THOK.Util.PersistentManager pm = new THOK.Util.PersistentManager()) { StockChannelDao schannelDao = new StockChannelDao(); OrderDao orderDao = new OrderDao(); OrderDao detailDao = new OrderDao(); SysParameterDao parameterDao = new SysParameterDao(); Dictionary<string, string> parameter = parameterDao.FindParameters(); //每天分拣结束后备货烟道是否为空 if (parameter["ClearStockChannel"] == "1") schannelDao.ClearCigarette(); //查询补货烟道表 DataTable channelTable = schannelDao.FindChannel(); //查询通道机卷烟数量信息表 DataTable orderCTable = orderDao.FindCigaretteQuantityFromChannelUsed(orderDate, batchNo, "3"); //查询立式机卷烟数量信息表(应加上混合烟道问题) DataTable orderTTable = orderDao.FindCigaretteQuantityFromChannelUsed(orderDate, batchNo, "2"); //取所有订单品牌及总数量 DataTable orderTable = detailDao.FindAllCigaretteQuantity(orderDate, batchNo,false).Tables[0]; StockOptimize stockOptimize = new StockOptimize(); bool isUseSynchronizeOptimize = Convert.ToBoolean(parameter["IsUseSynchronizeOptimize"]); DataTable mixTable = stockOptimize.Optimize(isUseSynchronizeOptimize, channelTable, isUseSynchronizeOptimize ? orderCTable : orderTable, isUseSynchronizeOptimize ? orderTTable : orderTable, orderDate, batchNo); schannelDao.UpdateChannel(channelTable); schannelDao.InsertStockChannelUsed(orderDate, batchNo,channelTable); schannelDao.InsertMixChannel(mixTable); if (OnSchedule != null) OnSchedule(this, new ScheduleEventArgs(6, "备货烟道优化", 1, 1)); } }
/// <summary> /// 生产线烟道优化 /// </summary> /// <param name="orderDate"></param> /// <param name="batchNo"></param> public void GenChannelSchedule(string orderDate, int batchNo) { using (THOK.Util.PersistentManager pm = new THOK.Util.PersistentManager()) { ChannelDao channelDao = new ChannelDao(); OrderDao detailDao = new OrderDao(); LineDeviceDao deviceDao = new LineDeviceDao(); ChannelOptimize channelSchedule = new ChannelOptimize(); THOK.AS.Dao.SysParameterDao parameterDao = new SysParameterDao(); Dictionary<string, string> parameter = parameterDao.FindParameters(); LineScheduleDao lineDao = new LineScheduleDao(); DataTable lineTable = lineDao.FindAllLine(orderDate, batchNo).Tables[0]; LineInfoDao lineDao1 = new LineInfoDao(); DataTable lineTable1 = lineDao1.GetAvailabeLine("3").Tables[0]; bool isUseWholePiecesSortLine = lineTable1.Rows.Count > 0; int currentCount = 0; int totalCount = lineTable.Rows.Count; foreach (DataRow lineRow in lineTable.Rows) { string lineCode = lineRow["LINECODE"].ToString(); //查询分拣线烟道表 DataTable channelTable = channelDao.FindAvailableChannel(lineCode).Tables[0]; //查询分拣线设备参数表 DataTable deviceTable = deviceDao.FindLineDevice(lineCode).Tables[0]; //通道机两条分拣线品牌必须一致,立式机两条分拣线则不需要一致 //取所有订单品牌及总数量 DataTable orderTable = detailDao.FindAllCigaretteQuantity(orderDate, batchNo, isUseWholePiecesSortLine).Tables[0]; //取每条线订单品牌及总数量 DataTable lineOrderTable = detailDao.FindLineCigaretteQuantity(orderDate, batchNo, lineCode, isUseWholePiecesSortLine).Tables[0]; bool isUseSynchronizeOptimize = Convert.ToBoolean(parameter["IsUseSynchronizeOptimize"]); channelSchedule.Optimize(isUseSynchronizeOptimize ? orderTable : lineOrderTable, lineOrderTable, channelTable, deviceTable, parameter); channelDao.SaveChannelSchedule(channelTable, orderDate, batchNo); if (OnSchedule != null) OnSchedule(this, new ScheduleEventArgs(3, "正在优化" + lineRow["LINECODE"].ToString() + "分拣线烟道", ++currentCount, totalCount)); } currentCount = 0; totalCount = lineTable1.Rows.Count; foreach (DataRow lineRow in lineTable1.Rows) { string lineCode = lineRow["LINECODE"].ToString(); //查询分拣线烟道表 DataTable channelTable = channelDao.FindAvailableChannel(lineCode).Tables[0]; channelDao.SaveChannelSchedule(channelTable, orderDate, batchNo); if (OnSchedule != null) OnSchedule(this, new ScheduleEventArgs(3, "正在优化" + lineRow["LINECODE"].ToString() + "分拣线烟道", ++currentCount, totalCount)); } } }