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.Model; namespace WMS.Business.CK { public partial class BussPickingWaveGoods : IBussFactory { public List GeterpData() { List errPakWaitOut = new List(); DataTable tb = DataProvider.Instance.PickingWaveGoods.GetDataErpData(); if (tb != null) { errPakWaitOut = ConvertHelper.ConvertToList(tb); } return errPakWaitOut; } public List GetPickingWaveGoodsDT(PickingWaveGoodsModel model) { List locList = new List(); DataTable tb = DataProvider.Instance.PickingWaveGoods.GetPickingWaveGoodsDT(model); if (tb != null) { locList = ConvertHelper.ConvertToList(tb); } return locList; } public List GetTaskdataHand() { List locList = new List(); DataTable tb = DataProvider.Instance.PickingWaveGoods.GetTaskdataHand(); if (tb != null) { locList = ConvertHelper.ConvertToList(tb); } return locList; } //DataTable GetDataT_ck_orderDetall() public List GetDataT_ck_orderDetall() { List list = new List(); DataTable tb = DataProvider.Instance.PickingWaveGoods.GetDataT_ck_orderDetall(); if (tb != null) { list = ConvertHelper.ConvertToList(tb); } return list; } public bool deleteMistock(string loc,string goodid) { return DataProvider.Instance.PickingWaveGoods.DEL_T_CK_ORDERS(loc,goodid); } //Insert_T_CK_ORDERS public bool Insert_T_CK_ORDERS(string sqlStr) { DataProvider.Instance.PickingWaveGoods.Insert_T_CK_ORDERS(sqlStr); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return true; } public bool insert_t_ck_ordersDetall(string sqlStr) { DataProvider.Instance.PickingWaveGoods.insert_t_ck_ordersDetall(sqlStr); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return true; } public bool delete_t_ckorder(string ORDER_ID) { DataProvider.Instance.PickingWaveGoods.delete_t_ckorder(ORDER_ID); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return true; } // public bool update_t_ck_ordersDetall(string orderid, string goodsId) { DataProvider.Instance.PickingWaveGoods.update_t_ck_ordersDetall(orderid, goodsId); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return true; } public bool GetDataErpData(string ORDER_ID) { return DataProvider.Instance.PickingWaveGoods.GetDataErpData(ORDER_ID); } public List GetLocHand() { List locList = new List(); DataTable tb = DataProvider.Instance.PickingWaveGoods.GetLocHand(); if (tb != null) { locList = ConvertHelper.ConvertToList(tb); } return locList; } public string HandDataLoc(string locid,string outStand,string size) { PickingWaveGoodsModel modelData = new PickingWaveGoodsModel(); string plcId = DataProvider.Instance.AutoRkData.GetPlcId(); modelData.LOC_ID = locid; modelData.plcId = plcId; modelData.PROVIDER_ID = ""; modelData.REMARK = ""; modelData.ToWhseloc = ""; modelData.outStand = outStand; modelData.GOOD_ID = "00000"; modelData.SCALE_UNIT = size; DataProvider.Instance.PickingWaveGoods.InsertHandGoods(modelData); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); DataProvider.Instance.MIStock.UpdateMisLoc(locid, "1"); TranRollback(); return ErrText; } public string DeleHandLoc(string locid) { DataTable tb= DataProvider.Instance.PickingWaveGoods.HandGoodsSts(locid); if(tb!=null) { if (tb.Rows.Count > 0) { if (tb.Rows[0]["STATUS"].ToString() == "0") { DataProvider.Instance.PickingWaveGoods.DelHandGoods(locid); } else { return "the State is changed,not delete"; } } } return ErrText; } public string TimerOutData() { lock ("b") { DataTable tb = DataProvider.Instance.PickingWaveGoods.GetTaskOutStatus(); if (tb != null) { if (tb.Rows.Count > 0) { List locList = ConvertHelper.ConvertToList(tb); if (locList != null) { if (locList.Count > 0) { for (int i= 0;i< locList.Count;i++) { OutMisData(locList[i]); } } } } } return ErrText; } } //手动出库判断是否已生成该出库单 public bool getPickData(string Locid) { return DataProvider.Instance.PickingWaveGoods.getPickData(Locid); } public bool getPickDataCount() { return DataProvider.Instance.PickingWaveGoods.getPickDataCount(); } public void UpDateSort(string Locid,string sort) { Transaction = DataProvider.Instance.TranOracle; DataProvider.Instance.PickingWaveGoods.UpDateSort(Locid,sort); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } public bool getLocS(string Locid) { return DataProvider.Instance.PickingWaveGoods.getLocS(Locid); } public string getYckLoc(string layer) { return DataProvider.Instance.PickingWaveGoods.getYckLoc(layer); } //判断模式 public DataTable getDecid(string decid) { return DataProvider.Instance.PickingWaveGoods.getDecid(decid); } public DataTable getRemark(string locid) { return DataProvider.Instance.PickingWaveGoods.getRemark(locid); } public DataTable getyck(string remark,string layer) { return DataProvider.Instance.PickingWaveGoods.getyck(remark,layer); } public DataTable getYK(string ctl) { return DataProvider.Instance.PickingWaveGoods.getYK(ctl); } public string SerLocWaitInSts(string ctl, string goodsid, string barcode, string GOODS_NUM_SJ, string out_id, string status, string GoodsMeaSure, string PACKING_NUM, string goodsVolume) { //DataProvider.Instance.PickingWaveGoods.SerLocWaitInSts(ctl, goodsid, barcode,GOODS_NUM_SJ, out_id,status, GoodsMeaSure, PACKING_NUM, goodsVolume); return ErrText; } /// /// 任务下发完成写完成表 /// /// /// public string ErpDataExpress(OrderDetailModel modeData) { decimal sl = 0;//剩余数量 string typeSts = "0"; DataTable tb = new DataTable(); tb = DataProvider.Instance.PickingWaveGoods.GetLocDataNo(modeData.GOOD_ID, modeData.GOODS_NUM, modeData.STORAGE_ID); if (tb == null) { return "数据错误,没有该物料的库存"; } if (tb.Rows.Count == 0) { DataProvider.Instance.OrderDetail.UpdateOrderDetailData(modeData.ORDER_ID, modeData.GOOD_ID, "没有库存"); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return "数据错误,没有该物料的库存"; } #region 算拣选站台,原则平均分配 string outStand = string.Empty; string strLocation = tb.Rows[0]["LOCATION_ID"].ToString(); if (strLocation.Substring(0, 2) == "01" || strLocation.Substring(0, 2) == "02") { outStand = "114"; } else if (strLocation.Substring(0, 2) == "03" || strLocation.Substring(0, 2) == "04") { outStand = "214"; } //if (modeData.STORAGE_ID == "SCC001") //{ // DataTable tbStaion = DataProvider.Instance.PickingWaveGoods.GetOutDataId(modeData.ORDER_ID); // if (tbStaion != null) // { // if (tbStaion.Rows.Count > 0) // { // outStand = tbStaion.Rows[0]["outStand"].ToString(); // } // else // { // DataSet tbstand = DataProvider.Instance.PickingWaveGoods.GetStation(modeData.STORAGE_ID); // if (tbstand != null) // { // if (tbstand.Tables[0].Rows.Count > 0) // { // outStand = tbstand.Tables[0].Rows[0]["ConveyorID"].ToString(); // } // else // { // outStand = tbstand.Tables[1].Rows[0]["outStand"].ToString(); // } // } // } // } //} #endregion string status = "0"; string plcId = string.Empty; string locId = tb.Rows[0]["LOCATION_ID"].ToString();//.LOCATION_ID; string PUTIN_ID = tb.Rows[0]["PUTIN_ID"].ToString(); string ctl = tb.Rows[0]["ctl"].ToString(); DataTable tbPlc = DataProvider.Instance.PickingWaveGoods.GetPickGoodsData(ctl, modeData.STORAGE_ID); if (tbPlc != null) { if (tbPlc.Rows.Count > 0) { plcId = tbPlc.Rows[0]["plcid"].ToString(); status= tbPlc.Rows[0]["status"].ToString(); } } if (tb.Rows[0]["AUTOSTS"].ToString()=="True") { typeSts = "LTK"; if (plcId.Trim().Length == 0) { plcId = DataProvider.Instance.AutoRkData.GetPlcId(); } } else { typeSts = "RF"; } int gosct = int.Parse(tb.Rows[0]["HASVOLUME"].ToString()); decimal goodsNum =decimal.Parse(tb.Rows[0]["SHELVES_NUM"].ToString()); decimal pickNum = 0;///拣货数量 if (goodsNum == modeData.GOODS_NUM) ///库存数量与出库数量相同 { pickNum = modeData.GOODS_NUM; sl = 0; } else if (goodsNum > modeData.GOODS_NUM)///库存数量大于出库数量相同 { pickNum = modeData.GOODS_NUM; sl = 0; } else if (goodsNum < modeData.GOODS_NUM) //库存数量小于出库数量相同 { sl = modeData.GOODS_NUM - goodsNum;//剩余数量 pickNum = goodsNum; } #region 单据增加 PickingWaveGoodsModel pickData = new PickingWaveGoodsModel(); pickData.PICKINGID = "SJD"+DateTime.Now.ToString("yyyyMMddHHmmssfff"); pickData.GOOD_ID = modeData.GOOD_ID; pickData.GOODS_NUM = 0; pickData.PICKING_NUM = pickNum; pickData.PACKING_NUM = 0; pickData.plcId = plcId; pickData.REMARK = modeData.XQ_TYPE; pickData.LOC_ID = locId; pickData.outStand = outStand; pickData.STORAGE_ID = modeData.STORAGE_ID; pickData.CTL = ctl; pickData.OUT_ID = modeData.ORDER_ID; pickData.typests = typeSts; pickData.status = status; pickData.GOODS_NUM_SJ = 0; pickData.PUTIN_ID = PUTIN_ID; pickData.PROVIDER_ID = modeData.ORDER_ID;//MES 工单号 DataProvider.Instance.PickingWaveGoods.InsertPickingWaveGoods(pickData); #endregion Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); if (locId != "") { if (sl == 0) { DataProvider.Instance.OrderDetail.UpdateOrderDetailData(modeData.ORDER_ID, modeData.GOOD_ID,""); logList.Add(DataProvider.Instance.logData); } else { modeData.PICK_NUM = pickNum;///已经拣货数量 modeData.GOODS_NUM = sl;///剩余数量 DataProvider.Instance.OrderDetail.UpdateOrderDetailPickNum(modeData); logList.Add(DataProvider.Instance.logData); } MIStockModel misMode = new MIStockModel(); misMode.CTL = ctl; misMode.LOCATION_ID = locId; misMode.OCCUPY_NUM = pickNum; misMode.GOODS_ID = modeData.GOOD_ID; misMode.STORAGE_ID = modeData.STORAGE_ID; misMode.PUTIN_ID = PUTIN_ID; DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(misMode); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } else { TranRollback(); return modeData.GOOD_ID+"没有库存"; } return ErrText; } public List LtkgetPickData(string outStand) { DataTable table = DataProvider.Instance.PickingWaveGoods.LtkgetPickData(outStand); if (table != null) { List PickingWaveGoodsModel = ConvertHelper.ConvertToList(table); return PickingWaveGoodsModel; } return null; } public List GetLocaStationAllData(string locID) { DataTable table = DataProvider.Instance.PickingWaveGoods.GetLocaStationAllData(locID); if (table != null) { List locData = ConvertHelper.ConvertToList(table); return locData; } return null; } /// /// 获取拣货的明细 /// public PickingWaveGoodsModel GetPickDataBarcode(string barcode) { DataTable table = DataProvider.Instance.PickingWaveGoods.GetPickDataBarcode(barcode); List OutModel = ConvertHelper.ConvertToList(table); if(OutModel.Count>0) { return OutModel[0]; } return null; } /// /// 任务下发到PLC写重量 /// /// public string UpDateWghMisBak(string barcode, string wgh) { DataProvider.Instance.PickingWaveGoods.UpDateWghMisBak(barcode, wgh); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); return this.ErrText; } /// /// 减去库存 /// /// public string OutMisData(PickingWaveGoodsModel pickData) { decimal strNum = 0; string height = "33"; if (pickData == null) { return "数据传入异常"; } DataTable tableMis = DataProvider.Instance.MIStock.GetMisDataOut(pickData.LOC_ID, pickData.GOOD_ID, pickData.STORAGE_ID); List OutMisModel = ConvertHelper.ConvertToList(tableMis); if (tableMis == null) { return null; } int i = 0; if (tableMis.Rows.Count == 0) { return null; } if (OutMisModel.Count > 0) { foreach (MIStockModel modleS in OutMisModel) { if ( pickData.typests == "1" || pickData.typests == "2" || pickData.typests == "") { // MIStockModel mis = OutMisModel[0]; MIStockBackModel MIBackModel = new MIStockBackModel(); MIBackModel.AREA_ID = modleS.AREA_ID; MIBackModel.ORI_NUM = modleS.SHELVES_NUM; MIBackModel.GOODS_NUM = pickData.PICKING_NUM; MIBackModel.GOODS_NUM_SJ = pickData.PICKING_NUM; MIBackModel.CHANGE_NUM = modleS.SHELVES_NUM - pickData.PICKING_NUM; strNum = MIBackModel.CHANGE_NUM; MIBackModel.GOODS_ID = modleS.GOODS_ID; MIBackModel.LOCATION_ID = modleS.LOCATION_ID; MIBackModel.OPERATOR_DATE = System.DateTime.Now; // MIBackModel.GOODS_NUM_SJ = 1; MIBackModel.OPERATOR_TYPE = "1"; MIBackModel.REMARK = modleS.REMARK; MIBackModel.PRODUCTION_DATE = modleS.PRODUCTION_DATE; MIBackModel.PUTIN_ID = modleS.PUTIN_ID; MIBackModel.STOCK_ID = modleS.STOCK_ID; MIBackModel.STORAGE_ID = modleS.STORAGE_ID; MIBackModel.OUT_ID = pickData.OUT_ID; MIBackModel.BARCODE = modleS.BARCODE; MIBackModel.ProDucLotId = modleS.PROVIDER_ID; MIBackModel.PICKINGID = pickData.PICKINGID; // MIBackModel.OPERATOR_MAN = userid; MIBackModel.GOODS_NAME = modleS.GOODS_NAME; // MIBackModel.OPERATOR_MAN = userid; MIBackModel.High = modleS.High; height = modleS.High; MIBackModel.WGH = modleS.WGH; MIBackModel.WARE_DATE = modleS.WARE_DATE; MIBackModel.CTL = modleS.CTL; DataProvider.Instance.MIStockBack.AddBMiStockack(MIBackModel); logList.Add(DataProvider.Instance.logData); Transaction = DataProvider.Instance.TranOracle; modleS.SHELVES_NUM = MIBackModel.CHANGE_NUM; modleS.OCCUPY_NUM = modleS.OCCUPY_NUM - pickData.GOODS_NUM_SJ; if (modleS.OCCUPY_NUM < 0) { modleS.OCCUPY_NUM = 0; } if (MIBackModel.CHANGE_NUM == 0) { MIStockModel modelSk = new MIStockModel(); modelSk.GOODS_ID = pickData.GOOD_ID; modelSk.LOCATION_ID = pickData.LOC_ID; modelSk.STORAGE_ID = pickData.STORAGE_ID; DataProvider.Instance.MIStock.DeleteMIStock(modelSk); logList.Add(DataProvider.Instance.logData); } else { //DataProvider.Instance.MIStock.UpdateMIStockNum(modleS); //logList.Add(DataProvider.Instance.logData); } DataProvider.Instance.AutoRkData.UpdateLocCtlSts(pickData.LOC_ID, "0", pickData.STORAGE_ID); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.PickingWaveGoods.InsertProDucLotIdGoodsBack(pickData.LOC_ID, pickData.OUT_ID); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.PickingWaveGoods.DeletePickingWaveGoods(pickData.LOC_ID, pickData.OUT_ID); logList.Add(DataProvider.Instance.logData); //DataProvider.Instance.PickingWaveGoods.UpdateErpData(pickData.OUT_ID, pickData.GOOD_ID); //logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } else { //移库更新库存位置 MIStockModel modelSk = new MIStockModel(); modelSk.GOODS_ID = pickData.GOOD_ID; modelSk.LOCATION_ID = pickData.LOC_ID; modelSk.STORAGE_ID = pickData.STORAGE_ID; DataProvider.Instance.StorageAreaLocation.UpdateLocSts(pickData.LOC_ID, "0"); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.MIStock.UpdateMisLocSts(pickData.LOC_ID, pickData.ToWhseloc, "0"); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.AutoRkData.UpdateLocCtlSts(pickData.ToWhseloc, "1", pickData.STORAGE_ID); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.PickingWaveGoods.InsertProDucLotIdGoodsBack(pickData.LOC_ID, pickData.OUT_ID); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); DataProvider.Instance.PickingWaveGoods.DeletePickingWaveGoods(pickData.LOC_ID, pickData.OUT_ID); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } } } return ErrText; } /// /// 合并托盘确定按钮 /// /// /// /// /// public void MergeCtl(string STORAGE_ID,string ctl,string locId,string newLocid,string outStand) { string plcId= DataProvider.Instance.AutoRkData.GetPlcId(); IBussFactory.Instance().OrderMesAdd("","",plcId, "", outStand, "", STORAGE_ID, ctl, 1, "1", "", "-1"); DataProvider.Instance.AutoRkData.UpdateLocCtlSts(locId, "0", STORAGE_ID); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); DataProvider.Instance.MIStock.UpdateMisLocData(newLocid, locId, STORAGE_ID,ctl ); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } /// /// 合并后的托盘回库 /// public void MergeCtlReturn(string STORAGE_ID, string ctl, string locId, string outStand) { string plcId = DataProvider.Instance.AutoRkData.GetPlcId(); IBussFactory.Instance().OrderMesAdd("","",plcId, "", outStand, "", STORAGE_ID, ctl, 1, "1", locId, "-1"); } /// /// 下发任务到PLC置Status /// /// public string UpdateStsPIckEnd(string ProDucLotId,string sts) { DataProvider.Instance.PickingWaveGoods.UpdateStsPIckEnd(ProDucLotId, sts); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } public string UpdaPickNum(string pickId, string goodsId, decimal picnum) { DataProvider.Instance.PickingWaveGoods.UpdaPickNum(pickId, goodsId, picnum); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } public string UpdateLocsts(string locid) { DataProvider.Instance.PickingWaveGoods.UpdateLocSts(locid); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } /// /// 新增拣选明细 /// /// /// public string InsertPickingInfo(PickngWaveInfo info) { DataProvider.Instance.pickingWareInfo.InsertPickingInfo(info); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); DataProvider.Instance.PickingWaveGoods.UpdaPickNum(info.PICKINGID, info.GOOD_ID, info.PICKING_NUM); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } public string DelePickingInfo(string picking, string locId) { DataProvider.Instance.pickingWareInfo.DelePickingInfo(picking,locId); Transaction = DataProvider.Instance.TranOracle; logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } public List GetPickInfo(string picking,string goodsid) { DataTable tableMis = new DataTable(); tableMis= DataProvider.Instance.pickingWareInfo.GetPickInfo(picking,goodsid); List OutMisModel = ConvertHelper.ConvertToList(tableMis); if (tableMis == null) { return null; } return OutMisModel; } } }