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; using System.Security.Cryptography; using WMS.Model.RK; using WMS.Model.SC; using WMS.Business.SC; 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 bool getPickDataProductionDate(string goodid, string production_date) { return DataProvider.Instance.PickingWaveGoods.getPickDataProductionDate(goodid, production_date); } 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 TimerMoveData() { lock ("b") { DataTable tb = DataProvider.Instance.PickingWaveGoods.GetTaskOutStatus_0(); 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++) { OutTask(locList[i]); } } } } } 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 GetPickData_BARCODE(string BARCODE) { return DataProvider.Instance.PickingWaveGoods.GetPickData_BARCODE(BARCODE); } public bool getPickDataCount(int TASK_NUM) { return DataProvider.Instance.PickingWaveGoods.getPickDataCount(TASK_NUM); } 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(Mod_CUX_WMS_MOVE_ORDER_ISSU_ITF modeData) { decimal sl = 0;//剩余数量 string typeSts = "0"; DataTable tb = new DataTable(); tb = DataProvider.Instance.PickingWaveGoods.GetLocDataNo(modeData.SEGMENT1, modeData.QUANTITY, modeData.TO_SUBINVENTORY_CODE); if (tb == null) { return "数据错误,没有该物料的库存"; } if (tb.Rows.Count == 0) { //出库搬运单无库存状态改2 modeData.STATUS = 2; IBussFactory.Instance().UPDATE_CUX_WMS_MOVE_ORDER_ISSU_ITF_STS(modeData); 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"; } #region //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 #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(); string BARCODE = tb.Rows[0]["BARCODE"].ToString(); DataTable tbPlc = DataProvider.Instance.PickingWaveGoods.GetPickGoodsData(ctl, modeData.TO_SUBINVENTORY_CODE); if (tbPlc != null) { if (tbPlc.Rows.Count > 0) { plcId = tbPlc.Rows[0]["plcid"].ToString(); status= tbPlc.Rows[0]["status"].ToString(); } } if (tb.Rows[0]["STS"].ToString()=="0") { //typeSts = "LTK"; typeSts = ""; 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.QUANTITY) ///库存数量与出库数量相同 { pickNum = modeData.QUANTITY; sl = 0; } else if (goodsNum > modeData.QUANTITY)///库存数量大于出库数量相同 { pickNum = modeData.QUANTITY; sl = 0; } else if (goodsNum < modeData.QUANTITY) //库存数量小于出库数量相同 { sl = modeData.QUANTITY - goodsNum;//剩余数量 pickNum = goodsNum; } #region 单据增加 decimal goodsArea = 0; DataTable dsGoodId = DataProvider.Instance.PickingWaveGoods.GetGoodsArea(modeData.SEGMENT1); if (dsGoodId != null) { if (dsGoodId.Rows.Count > 0) { // 初始化变量并设置默认值 decimal shipping_length = 0; decimal shipping_width = 0; decimal pcs_number = 1; // 默认值设为 1,避免除以零 // 检查并转换 shipping_length,如果为空或无效则赋值为 0 if (dsGoodId.Rows[0]["shipping_length"] != null && dsGoodId.Rows[0]["shipping_length"] != DBNull.Value && decimal.TryParse(dsGoodId.Rows[0]["shipping_length"].ToString(), out decimal tempLength)) { shipping_length = tempLength; } // 检查并转换 shipping_width,如果为空或无效则赋值为 0 if (dsGoodId.Rows[0]["shipping_width"] != null && dsGoodId.Rows[0]["shipping_width"] != DBNull.Value && decimal.TryParse(dsGoodId.Rows[0]["shipping_width"].ToString(), out decimal tempWidth)) { shipping_width = tempWidth; } // 检查并转换 pcs_number,如果为空或无效则赋值为 1 if (dsGoodId.Rows[0]["pcs_number"] != null && dsGoodId.Rows[0]["pcs_number"] != DBNull.Value && decimal.TryParse(dsGoodId.Rows[0]["pcs_number"].ToString(), out decimal tempPcsNumber) && tempPcsNumber != 0) { pcs_number = tempPcsNumber; } // 计算 goodsArea goodsArea = shipping_length * shipping_width / pcs_number / 1000000; //a.shipping_length,a.shipping_width,a.pcs_number //Shipping_width*Shipping_length/PCS_number/1000000 //decimal shipping_length = Convert.ToDecimal(dsGoodId.Rows[0]["shipping_length"].ToString ()); //decimal shipping_width = Convert.ToDecimal(dsGoodId.Rows[0]["shipping_width"].ToString()); //decimal pcs_number = Convert.ToDecimal(dsGoodId.Rows[0]["pcs_number"].ToString()); //goodsArea = shipping_length * shipping_width / pcs_number / 1000000; } } string ckid = "CK" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); PickingWaveGoodsModel pickData = new PickingWaveGoodsModel(); pickData.PICKINGID = ckid; pickData.GOOD_ID = modeData.SEGMENT1; pickData.GOODS_NUM = 0; pickData.PICKING_NUM = pickNum; pickData.PACKING_NUM = 0; pickData.plcId = plcId; pickData.REMARK = ""; pickData.LOC_ID = locId; pickData.outStand = outStand; pickData.STORAGE_ID = modeData.TO_SUBINVENTORY_CODE; pickData.CTL = ctl; pickData.OUT_ID = ckid; pickData.typests = typeSts; pickData.status = status; pickData.GOODS_NUM_SJ = 0; pickData.PUTIN_ID = PUTIN_ID; pickData.BARCODE = BARCODE; pickData.PROVIDER_ID = "";//MES 工单号 pickData.PRICE = goodsArea;//面积 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); modeData.STATUS = 3;//CUX_WMS_MOVE_ORDER_ISSU_ITF sts 状态(1:未处理;2:错误;3:成功) modeData.QUANTITY_DELIVERED = pickNum; IBussFactory.Instance().UPDATE_CUX_WMS_MOVE_ORDER_ISSU_ITF_STS(modeData); logList.Add(DataProvider.Instance.logData); } else { //modeData.PICK_NUM = pickNum;///已经拣货数量 //modeData.GOODS_NUM = sl;///剩余数量 //DataProvider.Instance.OrderDetail.UpdateOrderDetailPickNum(modeData); //logList.Add(DataProvider.Instance.logData); //modeData.STATUS = 1;//CUX_WMS_MOVE_ORDER_ISSU_ITF sts 状态(1:未处理;2:错误;3:成功) modeData.QUANTITY_DELIVERED = pickNum;//已经拣货数量 modeData.QUANTITY = sl;//剩余数量 IBussFactory.Instance().UPDATE_CUX_WMS_MOVE_ORDER_ISSU_ITF_STS(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.SEGMENT1; misMode.STORAGE_ID = modeData.TO_SUBINVENTORY_CODE; misMode.PUTIN_ID = PUTIN_ID; misMode.BARCODE= BARCODE; //DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(misMode); DataProvider.Instance.MIStock.UpdateMisSTS("1", locId, misMode.STORAGE_ID, misMode.GOODS_ID, misMode.BARCODE, misMode.OCCUPY_NUM); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); } else { TranRollback(); return modeData.SEGMENT1+"没有库存"; } 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.BARCODE); 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; //} MIStockModel modelSk = new MIStockModel(); modelSk.LOCATION_ID = pickData.LOC_ID; modelSk.CTL = pickData.CTL; //if (pickData.GOOD_ID == "000000") //{ // modelSk.BARCODE = ""; //} //else //{ // modelSk.BARCODE = pickData.BARCODE; //} DataProvider.Instance.MIStock.DeleteMIStock(modelSk); logList.Add(DataProvider.Instance.logData); //if (MIBackModel.CHANGE_NUM == 0) //{ //} //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 string OutTask(PickingWaveGoodsModel pickData) { //判断是否有已下发的堆垛机任务 int[] a = { 1, 2, 3 }; //判断是否需要移库 // decimal strNum = 0; string height = "33"; if (pickData == null) { return "数据传入异常"; } DataTable tableMis = DataProvider.Instance.MIStock.GetMisDataOut(pickData.LOC_ID, pickData.GOOD_ID, pickData.BARCODE); 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; //} MIStockModel modelSk = new MIStockModel(); modelSk.LOCATION_ID = pickData.LOC_ID; modelSk.CTL = pickData.CTL; //if (pickData.GOOD_ID == "000000") //{ // modelSk.BARCODE = ""; //} //else //{ // modelSk.BARCODE = pickData.BARCODE; //} DataProvider.Instance.MIStock.DeleteMIStock(modelSk); logList.Add(DataProvider.Instance.logData); //if (MIBackModel.CHANGE_NUM == 0) //{ //} //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; } } }