257 lines
11 KiB
C#
257 lines
11 KiB
C#
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();
|
||
}
|
||
|
||
}
|
||
}
|