using System; using System.Collections.Generic; using System.Linq; using System.Text; using WMS.Model.CK; using System.Data; using WMS.IData; using WMS.Common; using WMS.Model.Base; using WMS.Model.Stock; using WMS.Business.Stock; using WMS.Model.RK; namespace WMS.Business.CK { public class BussPickingWave : IBussFactory { /// /// 更新拣选任务 /// /// /// /// public string UpdatePickEnd(string pickingid, List listgoodsModel,string status) { DataProvider.Instance.PickingWave.UpdatePickingWave(pickingid, status); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); foreach(PickingWaveGoodsModel goodsInfo in listgoodsModel) { DataProvider.Instance.PickingWaveGoods.SerLocWaitInSts(goodsInfo.CTL, goodsInfo.GOOD_ID, goodsInfo.BARCODE, goodsInfo.GOODS_NUM_SJ.ToString(), goodsInfo.OUT_ID, goodsInfo.status, goodsInfo.GOODS_MEASURE_ID, goodsInfo.PACKING_NUM.ToString()); logList.Add(DataProvider.Instance.logData); } TaCmtOrRak(); return ErrText; } /// /// 获取拣货单结果集 /// /// 拣货单 public List GetPickingWaveList(PickingWaveModel model) { DataTable table = DataProvider.Instance.PickingWave.GetPickingWaveDT(model); List PickingWaveModel = ConvertHelper.ConvertToList(table); if (DataLogErrWrite(table, "获取拣货单")) { return PickingWaveModel; } return null; } /// /// 常规拣货波次,没有二次分拣 /// /// /// public string PickTask(List listOrder) { if(listOrder!=null) { // listOrder.FindAll(r => r.Storage_id == ""); if ("0" == "1") { ///立体库 1)销售订单2)非领料出库 ///提总订单明细 LtkPickTak(null, "", ""); } else { ///其他库 PickingWaveModel listPick = new PickingWaveModel(); string PICKINGID = IBussFactory.Instance().GetDocumentStream("下架单"); string barcode = string.Empty; listPick.STATUS = "0"; listPick.PICKINGID = PICKINGID; DataProvider.Instance.PickingWave.InsertPickingWave(listPick); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); foreach (OrdersModel order in listOrder) { OrderDetailModel or_det_Model = new OrderDetailModel(); or_det_Model.ORDER_ID = order.ORDER_ID; List< OrderDetailModel> or_det_List = IBussFactory.Instance().GetOrderDetail(or_det_Model); foreach(OrderDetailModel ordeInfo in or_det_List) { PickingWaveGoodsModel pickGoods = new PickingWaveGoodsModel(); pickGoods.GOOD_ID = ordeInfo.GOOD_ID; pickGoods.GOODS_NUM_SJ = 0; pickGoods.SCALE_UNIT = "0"; // pickGoods.GOODS_NAME = stModle.GOODS_NAME; pickGoods.OUT_ID = ordeInfo.ORDER_ID; pickGoods.PICKINGID = PICKINGID; // pickGoods.GOODS_NUM = ordeInfo.GOODS_NUM; pickGoods.PICKING_NUM = ordeInfo.GOODS_NUM; // pickGoods.LOC_ID = item["localid"].ToString(); // pickGoods.PUTIN_ID = item["PUTIN_ID"].ToString(); pickGoods.STORAGE_ID = order.Storage_id; DataProvider.Instance.PickingWaveGoods.InsertPickingWaveGoods(pickGoods); logList.Add(DataProvider.Instance.logData); } } WareNoticeModel ware = new WareNoticeModel(); ware.WAREHOUSING_ID = listOrder[0].ORDER_ID;// order; ware.STATE = "1"; DataProvider.Instance.WareNotice.updateWareNoticeState(ware); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } } return ErrText; } public string LtkPickTak(DataTable goodsid,string ck,string kq) { try { // List listPickingGoods = new List(); PickingWaveModel listPick = new PickingWaveModel(); string PICKINGID = IBussFactory.Instance().GetDocumentStream("下架单"); string barcode = string.Empty; listPick.STORAGE_ID = ck; listPick.AREA_ID = kq;//.Storage_area_id; listPick.CREATE_DATE = System.DateTime.Now;//货任务写入数据库 listPick.STATUS = "0"; listPick.PICKINGID = PICKINGID; DataProvider.Instance.PickingWave.InsertPickingWave(listPick); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); foreach (DataRow item in goodsid.Rows) { MIStockModel stModle = new MIStockModel(); PickingWaveGoodsModel pickGoods = new PickingWaveGoodsModel(); //bool newValue = false; decimal number = decimal.Parse(item["SHELF_NUM"].ToString()); decimal num = decimal.Parse(item["SHELF_NUM"].ToString()); ////获取该商品的库存信息 stModle.GOODS_ID = item["GOODSID"].ToString(); stModle.LOCATION_ID = item["localid"].ToString(); DataTable tableKc = DataProvider.Instance.MIStock.GetMIStockDT(stModle); stModle.GOODS_NAME = item["GOODSNAME"].ToString(); logList.Add(DataProvider.Instance.logData); if (tableKc != null) { if (tableKc.Rows.Count == 0) { ErrText = stModle.GOODS_NAME + "无该商品的库存"; continue; } List goodskcxx = ConvertHelper.ConvertToList(tableKc);///该商品的库位 1:如果需要则按照库位和入库批次sum /// barcode = goodskcxx[0].BARCODE; /// //foreach (MIStockModel list in goodskcxx) //{ if (item["localid"].ToString().Trim().Length > 0) { pickGoods = new PickingWaveGoodsModel(); pickGoods.GOOD_ID = stModle.GOODS_ID; pickGoods.GOODS_NUM_SJ = 0; pickGoods.SCALE_UNIT = "0"; pickGoods.GOODS_NAME = stModle.GOODS_NAME; pickGoods.OUT_ID = "ltk000"; pickGoods.PICKINGID = PICKINGID; pickGoods.GOODS_NUM = decimal.Parse(item["SHELF_NUM"].ToString()); pickGoods.LOC_ID = item["localid"].ToString(); pickGoods.PUTIN_ID = item["PUTIN_ID"].ToString(); pickGoods.STORAGE_ID = ck; pickGoods.AREA_ID = kq; pickGoods.CTL = item["ctl"].ToString(); //DataTable kwTable = DataProvider.Instance.MIStock.GetLoctionGoods(pickGoods.LOC_ID);///如果库位已经有其他的商品,则需要做一次入库库任务 //if (kwTable != null) //{ // if (kwTable.Rows.Count > 0) // { // if (kwTable.Rows.Count > 1 || pickGoods.GOODS_NUM < decimal.Parse(kwTable.Rows[0]["shelves_num"].ToString())) // { // DataProvider.Instance.OnGoodsShelf.InsertLtkData(pickGoods.LOC_ID, "", "出入库", "1", PICKINGID, "0", "", "", pickGoods.CTL); // logList.Add(DataProvider.Instance.logData); // } // } //} // DataProvider.Instance.OnGoodsShelf.InsertLtkData(pickGoods.LOC_ID, pickGoods.GOOD_ID, // "出库", "1", PICKINGID, pickGoods.GOODS_NUM.ToString(), stModle.GOODS_NAME, barcode, pickGoods.CTL, ""); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.PickingWaveGoods.InsertPickingWaveGoods(pickGoods); logList.Add(DataProvider.Instance.logData); } continue; } // } } } catch (Exception ex) { LogWriteText.WriteLog(ex.Message.ToString()+ex.TargetSite+ex.Source+ex.StackTrace ); } TaCmtOrRak(); return ErrText; } /// /// 获取拣货单集合 /// /// 拣货单集合 public List GetPickingWaveListList(List list) { DataTable table = DataProvider.Instance.PickingWave.GetPickingWaveListDT(list); List PickingWaveModel = ConvertHelper.ConvertToList(table); if (DataLogErrWrite(table, "获取拣货单集合")) { return PickingWaveModel; } return null; } public void UpdatePickingWave(string pickingid,string status) { DataProvider.Instance.PickingWave.UpdatePickingWave(pickingid, status); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } } }