BaoKai_202508-Wms-Jingwang..../WMS.Business/CK/BussPickingWave.cs

257 lines
11 KiB
C#
Raw Permalink Normal View History

2025-08-24 09:35:55 +08:00
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
{
/// <summary>
/// 更新拣选任务
/// </summary>
/// <param name="pickingid"></param>
/// <param name="goodsModel"></param>
/// <param name="status"></param>
public string UpdatePickEnd(string pickingid, List<PickingWaveGoodsModel> 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;
}
/// <summary>
/// 获取拣货单结果集
/// </summary>
/// <returns>拣货单</returns>
public List<PickingWaveModel> GetPickingWaveList(PickingWaveModel model)
{
DataTable table = DataProvider.Instance.PickingWave.GetPickingWaveDT(model);
List<PickingWaveModel> PickingWaveModel = ConvertHelper<PickingWaveModel>.ConvertToList(table);
if (DataLogErrWrite(table, "获取拣货单"))
{
return PickingWaveModel;
}
return null;
}
/// <summary>
/// 常规拣货波次,没有二次分拣
/// </summary>
/// <param name="listOrder"></param>
/// <returns></returns>
public string PickTask(List<OrdersModel> 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<WMS.Business.Base.BussDocumentTable>.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<BussOrderDetail>.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<PickingWaveGoodsModel> listPickingGoods = new List<PickingWaveGoodsModel>();
PickingWaveModel listPick = new PickingWaveModel();
string PICKINGID = IBussFactory<WMS.Business.Base.BussDocumentTable>.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<MIStockModel> goodskcxx = ConvertHelper<MIStockModel>.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;
}
/// <summary>
/// 获取拣货单集合
/// </summary>
/// <returns>拣货单集合</returns>
public List<PickingWaveModel> GetPickingWaveListList(List<PickingWaveModel> list)
{
DataTable table = DataProvider.Instance.PickingWave.GetPickingWaveListDT(list);
List<PickingWaveModel> PickingWaveModel = ConvertHelper<PickingWaveModel>.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();
}
}
}