using System; using System.Collections.Generic; using System.Linq; using System.Text; using WMS.Model.Stock; using System.Data; using WMS.IData; using WMS.Common; using WMS.Model.Base; namespace WMS.Business.Stock { public class BussMoveLoc : IBussFactory { /// /// 修改移位单(包括明细) /// /// 移位单Model /// 明细ModelList /// 是否成功 public string UpdateMoveLocAndTab(MoveLocModel moveLocModel, List listMoveLocTab, List listSKU) { //修改移位单 DataProvider.Instance.MoveLoc.UpdateMoveLoc(moveLocModel); logList.Add(DataProvider.Instance.logData); Transaction = DataProvider.Instance.TranOracle; //获取原来的所有明细,减去原来的已占用库存 MoveLocTabModel tab = new MoveLocTabModel(); tab.MOVELOC_ID = moveLocModel.MOVELOC_ID; DataTable table = DataProvider.Instance.MoveLocTab.GetMoveLocTabDT(tab); List moveLocTabList = ConvertHelper.ConvertToList(table); foreach (var item in moveLocTabList) { MIStockModel mi = new MIStockModel(); mi.PUTIN_ID = item.PUTIN_ID; mi.GOODS_ID = item.GOODS_ID; mi.LOCATION_ID = item.OLD_LOC_ID; mi.OCCUPY_NUM = -item.PLAN_NUM; DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(mi); logList.Add(DataProvider.Instance.logData); //删除库存占用记录表相应记录 MIStockOccupyModel queryOccupy = new MIStockOccupyModel(); queryOccupy.GOODS_ID = mi.GOODS_ID; queryOccupy.LOCATION_ID = mi.LOCATION_ID; queryOccupy.PUTIN_ID = mi.PUTIN_ID; List occupy = ConvertHelper.ConvertToList(DataProvider.Instance.MIStockOccupy.GetMIStockOccupyDT(queryOccupy)); DataProvider.Instance.MIStockOccupy.DeleteMIStockOccupy(occupy[0]); logList.Add(DataProvider.Instance.logData); } //删除所有明细 DataProvider.Instance.MoveLocTab.DeleteMoveLocTab(moveLocModel.MOVELOC_ID); logList.Add(DataProvider.Instance.logData); //增加明细 foreach (MoveLocTabModel moveLocTabModel in listMoveLocTab) { DataProvider.Instance.MoveLocTab.InsertMoveLocTab(moveLocTabModel); logList.Add(DataProvider.Instance.logData); //根据计划数修改已占用库存 MIStockModel mi = new MIStockModel(); mi.PUTIN_ID = moveLocTabModel.PUTIN_ID; mi.GOODS_ID = moveLocTabModel.GOODS_ID; mi.LOCATION_ID = moveLocTabModel.OLD_LOC_ID; mi.OCCUPY_NUM = moveLocTabModel.PLAN_NUM; DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(mi); logList.Add(DataProvider.Instance.logData); //写入库存占用记录表 MIStockModel mistock = ConvertHelper.ConvertToList(DataProvider.Instance.MIStock.GetMIStockDT(mi))[0]; MIStockOccupyModel occupy = new MIStockOccupyModel(); occupy.AREA_ID = mistock.AREA_ID; occupy.DOCCTNUMBER = moveLocTabModel.MOVELOC_ID; occupy.GOODS_ID = mistock.GOODS_ID; occupy.LOCATION_ID = mistock.LOCATION_ID; occupy.OCCUPY_NUM = moveLocTabModel.PLAN_NUM; occupy.PUTIN_ID = mistock.PUTIN_ID; occupy.STOCK_ID = mistock.STOCK_ID; occupy.STORAGE_ID = mistock.STORAGE_ID; DataProvider.Instance.MIStockOccupy.InsertMIStockOccupy(occupy); logList.Add(DataProvider.Instance.logData); } if (moveLocModel.STATE == "2") {//状态为完成 List hadUpdeteList = new List();//已经被修改过的库存记录 foreach (MoveLocTabModel item in listMoveLocTab) { /*操作库存表*/ MIStockModel model = new MIStockModel();//出 model.LOCATION_ID = item.OLD_LOC_ID; model.GOODS_ID = item.GOODS_ID; model.PUTIN_ID = item.PUTIN_ID; //得到库存记录 bool hadMIStock = false; foreach (MIStockModel i in hadUpdeteList) { if (i.LOCATION_ID == model.LOCATION_ID && i.GOODS_ID == model.GOODS_ID && i.PUTIN_ID == model.PUTIN_ID) { hadMIStock = true; model = i; break; } } if (!hadMIStock) { model = ConvertHelper.ConvertToList(DataProvider.Instance.MIStock.GetMIStockDT(model))[0]; } model.SHELVES_NUM -= item.REAL_NUM;//修改库存记录 //model.OCCUPY_NUM -= item.PLAN_NUM; if (model.SHELVES_NUM == 0) { //删该条库存 DataProvider.Instance.MIStock.DeleteMIStock(model); logList.Add(DataProvider.Instance.logData); } else { hadUpdeteList.Add(model);//保存修改过的库存记录 DataProvider.Instance.MIStock.UpdateMIStock(model); logList.Add(DataProvider.Instance.logData); } //操作库存日志表 MIStockBackModel backModel = new MIStockBackModel();//出 backModel.AREA_ID = model.AREA_ID; backModel.CHANGE_NUM = model.SHELVES_NUM; backModel.GOODS_ID = model.GOODS_ID; backModel.GOODS_NAME = model.GOODS_NAME; backModel.GOODS_NUM = item.REAL_NUM; backModel.GOODS_TYPEID = model.GOODS_TYPEID; backModel.ID = DataProvider.Instance.MIStockBack.GetSerialNum(); backModel.LOCATION_ID = model.LOCATION_ID; backModel.OPERATOR_MAN = moveLocModel.MOVE_PERSON; backModel.OPERATOR_MAN_NAME = moveLocModel.MOVE_PERSON_NAME; backModel.OPERATOR_TYPE = "1"; backModel.ORI_NUM = model.SHELVES_NUM + item.REAL_NUM; backModel.OUT_ID = item.MOVELOC_TAB_ID; backModel.PRODUCTION_DATE = model.PRODUCTION_DATE; backModel.REMARK = model.REMARK; backModel.STOCK_ID = model.STOCK_ID; backModel.STORAGE_ID = model.STORAGE_ID; backModel.STORAGE_NAME = model.STORAGE_NAME; backModel.VERSION = model.VERSION; backModel.PUTIN_ID = model.PUTIN_ID; DataProvider.Instance.MIStockBack.AddBMiStockack(backModel); logList.Add(DataProvider.Instance.logData); /*操作库存表*/ MIStockModel inModel = new MIStockModel();//入 //inModel.LOCATION_ID = item.NEW_LOC_ID; //inModel.GOODS_ID = item.GOODS_ID; ////得到库存记录 //hadMIStock = false; //foreach (MIStockModel i in hadUpdeteList) //{ // if (i.LOCATION_ID == inModel.LOCATION_ID && i.GOODS_ID == inModel.GOODS_ID) // { // hadMIStock = true; // inModel = i; // break; // } //} //if (!hadMIStock) //{ // List nowMIStock = ConvertHelper.ConvertToList(DataProvider.Instance.MIStock.GetMIStockDT(inModel)); // if (nowMIStock.Count > 0)//有该记录但没改过 // { // inModel = nowMIStock[0]; // inModel.SHELVES_NUM += item.REAL_NUM; // DataProvider.Instance.MIStock.UpdateMIStock(inModel); // logList.Add(DataProvider.Instance.logData); // } // else//没有该记录添加 // { inModel = model; inModel.OCCUPY_NUM = 0; inModel.LOCATION_ID = item.NEW_LOC_ID; inModel.GOODS_ID = item.GOODS_ID; inModel.PUTIN_ID = item.PUTIN_ID; inModel.SHELVES_NUM = item.REAL_NUM; inModel.WARE_DATE = System.DateTime.Now; inModel.DOCCTNUMBER = item.MOVELOC_ID; inModel.STOCK_ID = DataProvider.Instance.MIStock.InsertMIStock(inModel);////////////////////////////////////////////////// logList.Add(DataProvider.Instance.logData); // } //} //else {//已经改过 // inModel.SHELVES_NUM += item.REAL_NUM; // DataProvider.Instance.MIStock.UpdateMIStock(inModel); // logList.Add(DataProvider.Instance.logData); //} //hadUpdeteList.Add(inModel);//保存修改过的库存记录 //操作库存日志表 backModel = new MIStockBackModel();//入 backModel.AREA_ID = inModel.AREA_ID; backModel.CHANGE_NUM = inModel.SHELVES_NUM; backModel.GOODS_ID = inModel.GOODS_ID; backModel.GOODS_NAME = inModel.GOODS_NAME; backModel.GOODS_NUM = item.REAL_NUM; backModel.GOODS_TYPEID = inModel.GOODS_TYPEID; backModel.ID = DataProvider.Instance.MIStockBack.GetSerialNum(); backModel.LOCATION_ID = inModel.LOCATION_ID; backModel.OPERATOR_MAN = moveLocModel.MOVE_PERSON; backModel.OPERATOR_MAN_NAME = moveLocModel.MOVE_PERSON_NAME; backModel.OPERATOR_TYPE = "0"; backModel.ORI_NUM = inModel.SHELVES_NUM - item.REAL_NUM; backModel.PUTIN_ID = item.PUTIN_ID; backModel.PRODUCTION_DATE = inModel.PRODUCTION_DATE; backModel.REMARK = inModel.REMARK; backModel.STOCK_ID = inModel.STOCK_ID; backModel.STORAGE_ID = inModel.STORAGE_ID; backModel.STORAGE_NAME = inModel.STORAGE_NAME; backModel.VERSION = inModel.VERSION; DataProvider.Instance.MIStockBack.AddBMiStockack(backModel); logList.Add(DataProvider.Instance.logData); //修改库位已占用体积 GoodsInfoModel goods = new GoodsInfoModel(); Decimal perVo = Convert.ToDecimal(DataProvider.Instance.Goods.GetGoodsDataTable(item.GOODS_ID, "", "", "").Rows[0]["GVOLUME"].ToString()); Decimal allVo = 0; allVo = item.REAL_NUM * perVo; if (allVo != 0) { //原库位 StorageAreaLocationModel loc = new StorageAreaLocationModel(); loc.STORAGE_ID = moveLocModel.STORAGE_ID; loc.LOCATION_ID = item.OLD_LOC_ID; loc = ConvertHelper.ConvertToList(DataProvider.Instance.StorageAreaLocation.GetLocationInfoDS(loc))[0]; loc.HASVOLUME -= allVo; loc.OPERATORID = moveLocModel.MOVE_PERSON; DataProvider.Instance.StorageAreaLocation.UpdateLocHasVolume(loc); logList.Add(DataProvider.Instance.logData); //新库位 loc = new StorageAreaLocationModel(); loc.STORAGE_ID = moveLocModel.STORAGE_ID; loc.LOCATION_ID = item.NEW_LOC_ID; loc = ConvertHelper.ConvertToList(DataProvider.Instance.StorageAreaLocation.GetLocationInfoDS(loc))[0]; loc.HASVOLUME += allVo; loc.OPERATORID = moveLocModel.MOVE_PERSON; DataProvider.Instance.StorageAreaLocation.UpdateLocHasVolume(loc); logList.Add(DataProvider.Instance.logData); } } } //修改规格明细 TaCmtOrRak(); return ErrText; } /// /// 新增移位单(包括明细) /// /// 移位单Model /// 明细ModelList /// 是否成功 public string InsertMoveLocAndTab(MoveLocModel moveLocModel, List listMoveLocTab, List listSKU) { //新增移位单 moveLocModel.MOVELOC_ID = IBussFactory.Instance().GetDocumentStream("移位单"); DataProvider.Instance.MoveLoc.InsertMoveLoc(moveLocModel); logList.Add(DataProvider.Instance.logData); Transaction = DataProvider.Instance.TranOracle; ////删除所有明细 //DataProvider.Instance.MoveLocTab.DeleteMoveLocTab(MoveLocModel.MOVELOC_ID); //logList.Add(DataProvider.Instance.logData); //增加明细 foreach (MoveLocTabModel moveLocTabModel in listMoveLocTab) { if (!string.IsNullOrEmpty(moveLocModel.MOVELOC_ID)) { moveLocTabModel.MOVELOC_ID = moveLocModel.MOVELOC_ID; } DataProvider.Instance.MoveLocTab.InsertMoveLocTab(moveLocTabModel); logList.Add(DataProvider.Instance.logData); ////根据计划数修改已占用库存 //MIStockModel mi = new MIStockModel(); //mi.PUTIN_ID = moveLocTabModel.PUTIN_ID; //mi.GOODS_ID = moveLocTabModel.GOODS_ID; //mi.LOCATION_ID = moveLocTabModel.OLD_LOC_ID; //mi.OCCUPY_NUM = moveLocTabModel.PLAN_NUM; //DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(mi); //logList.Add(DataProvider.Instance.logData); ////写入库存占用记录表 //MIStockModel mistock = ConvertHelper.ConvertToList(DataProvider.Instance.MIStock.GetMIStockDT(mi))[0]; //MIStockOccupyModel occupy = new MIStockOccupyModel(); //occupy.AREA_ID = mistock.AREA_ID; //occupy.DOCCTNUMBER = moveLocTabModel.MOVELOC_ID; //occupy.GOODS_ID = mistock.GOODS_ID; //occupy.LOCATION_ID = mistock.LOCATION_ID; //occupy.OCCUPY_NUM = moveLocTabModel.PLAN_NUM; //occupy.PUTIN_ID = mistock.PUTIN_ID; //occupy.STOCK_ID = mistock.STOCK_ID; //occupy.STORAGE_ID = mistock.STORAGE_ID; //DataProvider.Instance.MIStockOccupy.InsertMIStockOccupy(occupy); //logList.Add(DataProvider.Instance.logData); } TaCmtOrRak(); #region 新增消息 MessageModel messModel = new MessageModel(); messModel.ID = "YW" + DateTime.Now.ToString("yyyyMMddHHmmss") + DataProvider.Instance.Message.GetSerialNum(); messModel.MENU_FORM = "FrmMoveLoc"; messModel.MESS_CONTENT = "新增移位单,单据编号:" + moveLocModel.MOVELOC_ID; messModel.MESS_DATE = DateTime.Now; messModel.MESS_DEP = moveLocModel.STORAGE_ID; messModel.MESS_FLAG = "0"; messModel.MESS_STAR = moveLocModel.CREATE_PERSON; messModel.MESS_TO = moveLocModel.MOVE_PERSON; messModel.MESS_STATUS = "0"; messModel.WORK_TYPE = "worktype005"; messModel.WORK_KIND = "0"; messModel.MESS_TYPE = "6"; messModel.RELATIVE_NUMBER = moveLocModel.MOVELOC_ID; messModel.STO_ID = moveLocModel.STORAGE_ID; DataProvider.Instance.Message.Add(messModel); logList.Add(DataProvider.Instance.logData); Transaction = DataProvider.Instance.TranOracle; TaCmtOrRak(); #endregion return ErrText; } /// /// 获取移位单结果集 /// /// 移位单 public List GetMoveLocList(MoveLocModel model) { DataTable table = DataProvider.Instance.MoveLoc.GetMoveLocDT(model); List MoveLocModel = ConvertHelper.ConvertToList(table); if (DataLogErrWrite(table, "获取移位单")) { return MoveLocModel; } return null; } /// /// 删除移位单信息 /// /// 移位单 /// 是否成功 public string DeleteMoveLoc(string MoveLocID) { DataProvider.Instance.MoveLoc.DeleteMoveLoc(MoveLocID); TaCmtOrRak(); return ErrText; } /// /// 删除移位单信息与属于它的商品清单信息 /// /// 移位单 /// 是否成功 public string DeleteMoveLocAndTab(string MoveLocID) { DataProvider.Instance.MoveLoc.DeleteMoveLoc(MoveLocID); logList.Add(DataProvider.Instance.logData); Transaction = DataProvider.Instance.TranOracle; //获取原来的所有明细,减去原来的已占用库存 MoveLocTabModel tab = new MoveLocTabModel(); tab.MOVELOC_ID = MoveLocID; DataTable table = DataProvider.Instance.MoveLocTab.GetMoveLocTabDT(tab); List moveLocTabList = ConvertHelper.ConvertToList(table); foreach (var item in moveLocTabList) { MIStockModel mi = new MIStockModel(); mi.PUTIN_ID = item.PUTIN_ID; mi.GOODS_ID = item.GOODS_ID; mi.LOCATION_ID = item.OLD_LOC_ID; mi.OCCUPY_NUM = -item.PLAN_NUM; DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(mi); logList.Add(DataProvider.Instance.logData); //删除库存占用记录表相应记录 MIStockOccupyModel queryOccupy = new MIStockOccupyModel(); queryOccupy.GOODS_ID = mi.GOODS_ID; queryOccupy.LOCATION_ID = mi.LOCATION_ID; queryOccupy.PUTIN_ID = mi.PUTIN_ID; List occupy = ConvertHelper.ConvertToList(DataProvider.Instance.MIStockOccupy.GetMIStockOccupyDT(queryOccupy)); DataProvider.Instance.MIStockOccupy.DeleteMIStockOccupy(occupy[0]); logList.Add(DataProvider.Instance.logData); } DataProvider.Instance.MoveLocTab.DeleteMoveLocTab(MoveLocID); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } /// /// 修改移位单Status /// /// 移位单Model /// 是否成功 public string UpdateMoveLocState(MoveLocModel MoveLocModel) { //修改移位单Status DataProvider.Instance.MoveLoc.UpdateMoveLocState(MoveLocModel); logList.Add(DataProvider.Instance.logData); Transaction = DataProvider.Instance.TranOracle; if (MoveLocModel.STATE == "1") { MoveLocTabModel m = new MoveLocTabModel(); m.MOVELOC_ID = MoveLocModel.MOVELOC_ID; DataTable table = DataProvider.Instance.MoveLocTab.GetMoveLocTabDT(m); List list = ConvertHelper.ConvertToList(table); foreach (var moveLocTabModel in list) { //根据计划数修改已占用库存 MIStockModel mi = new MIStockModel(); mi.PUTIN_ID = moveLocTabModel.PUTIN_ID; mi.GOODS_ID = moveLocTabModel.GOODS_ID; mi.LOCATION_ID = moveLocTabModel.OLD_LOC_ID; mi.OCCUPY_NUM = moveLocTabModel.PLAN_NUM; DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(mi); logList.Add(DataProvider.Instance.logData); //写入库存占用记录表 MIStockModel mistock = ConvertHelper.ConvertToList(DataProvider.Instance.MIStock.GetMIStockDT(mi))[0]; MIStockOccupyModel occupy = new MIStockOccupyModel(); occupy.AREA_ID = mistock.AREA_ID; occupy.DOCCTNUMBER = moveLocTabModel.MOVELOC_ID; occupy.GOODS_ID = mistock.GOODS_ID; occupy.LOCATION_ID = mistock.LOCATION_ID; occupy.OCCUPY_NUM = moveLocTabModel.PLAN_NUM; occupy.PUTIN_ID = mistock.PUTIN_ID; occupy.STOCK_ID = mistock.STOCK_ID; occupy.STORAGE_ID = mistock.STORAGE_ID; DataProvider.Instance.MIStockOccupy.InsertMIStockOccupy(occupy); logList.Add(DataProvider.Instance.logData); } } TaCmtOrRak(); return ErrText; } /// /// 将已完成的或已关闭的移位单与属于它的移位单明细放到备份表中 /// /// 移位单 /// 是否成功 public string MoveMoveLocAndTabIntoBack(MoveLocModel moveLocModel) { DataProvider.Instance.MoveLoc.UpdateMoveLocState(moveLocModel); logList.Add(DataProvider.Instance.logData); Transaction = DataProvider.Instance.TranOracle; DataProvider.Instance.MoveLoc.InsertMoveLocBack(moveLocModel.MOVELOC_ID); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.MoveLocTab.InsertMoveLocTabBack(moveLocModel.MOVELOC_ID); logList.Add(DataProvider.Instance.logData); DataProvider.Instance.MoveLoc.DeleteMoveLoc(moveLocModel.MOVELOC_ID); logList.Add(DataProvider.Instance.logData); //获取原来的所有明细,减去原来的已占用库存 MoveLocTabModel tab = new MoveLocTabModel(); tab.MOVELOC_ID = moveLocModel.MOVELOC_ID; DataTable table = DataProvider.Instance.MoveLocTab.GetMoveLocTabDT(tab); List moveLocTabList = ConvertHelper.ConvertToList(table); foreach (var item in moveLocTabList) { MIStockModel mi = new MIStockModel(); mi.PUTIN_ID = item.PUTIN_ID; mi.GOODS_ID = item.GOODS_ID; mi.LOCATION_ID = item.OLD_LOC_ID; mi.OCCUPY_NUM = -item.PLAN_NUM; DataProvider.Instance.MIStock.UpdateMIStockOccupyNum(mi); logList.Add(DataProvider.Instance.logData); //删除库存占用记录表相应记录 MIStockOccupyModel queryOccupy = new MIStockOccupyModel(); queryOccupy.GOODS_ID = mi.GOODS_ID; queryOccupy.LOCATION_ID = mi.LOCATION_ID; queryOccupy.PUTIN_ID = mi.PUTIN_ID; List occupy = ConvertHelper.ConvertToList(DataProvider.Instance.MIStockOccupy.GetMIStockOccupyDT(queryOccupy)); DataProvider.Instance.MIStockOccupy.DeleteMIStockOccupy(occupy[0]); logList.Add(DataProvider.Instance.logData); } DataProvider.Instance.MoveLocTab.DeleteMoveLocTab(moveLocModel.MOVELOC_ID); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } /// /// 打印完成 /// /// 移位单 /// 是否成功 public string PrintOK(MoveLocModel model) { //修改捡货单打印次数 model.PRINT_COUNT += 1; DataProvider.Instance.MoveLoc.UpdateMoveLoc(model); logList.Add(DataProvider.Instance.logData); TaCmtOrRak(); return ErrText; } } }