BaoKai_202508-Wms-Jingwang..../WMS.Business/CK/BussPickingWave.cs
2025-08-24 09:35:55 +08:00

257 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}
}