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