878 lines
35 KiB
C#
878 lines
35 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 System.Threading.Tasks;
|
||
using WMS.Model.Base;
|
||
using WMS.Model.Stock;
|
||
|
||
namespace WMS.Business.CK
|
||
{
|
||
public class BussOrders : IBussFactory
|
||
{
|
||
/// <summary>
|
||
/// 查询订单的
|
||
/// </summary>
|
||
/// <param name="orderID"></param>
|
||
/// <returns></returns>
|
||
|
||
public int GetCtOrder(string orderID)
|
||
{
|
||
DataTable tb = DataProvider.Instance.OrderDetail.GetCtOrder(orderID);
|
||
if(tb!=null)
|
||
{
|
||
if(tb.Rows.Count>0)
|
||
{
|
||
return int.Parse(tb.Rows[0]["a"].ToString());
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
/// <summary>
|
||
/// 修改采购订单
|
||
/// </summary>
|
||
/// <param name="orderInfo"></param>
|
||
/// <returns></returns>
|
||
public string EditOrderInfo(List<CgOrderInfo> orderInfo)
|
||
{
|
||
string orderId = orderInfo[0].CGORDERID;
|
||
DataProvider.Instance.OrderDetail.DelOrderInfo(orderId);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
foreach (CgOrderInfo inOrderData in orderInfo)
|
||
{
|
||
inOrderData.CGORDERID = orderId;
|
||
DataProvider.Instance.Orders.InCgOrderInfo(inOrderData);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
/// <summary>
|
||
/// 查询采购单明细
|
||
/// </summary>
|
||
/// <param name="orderID"></param>
|
||
/// <returns></returns>
|
||
public List<CgOrderInfo> GetCgOrderInfo(string orderID)
|
||
{
|
||
DataTable tb = DataProvider.Instance.OrderDetail.GetCgOrderInfo(orderID);
|
||
if(tb!=null)
|
||
{
|
||
List<CgOrderInfo> list = ConvertHelper<CgOrderInfo>.ConvertToList(tb);
|
||
return list;
|
||
}
|
||
return null;
|
||
}
|
||
/// <summary>
|
||
/// 审核采购订单
|
||
/// </summary>
|
||
/// <param name="orderID"></param>
|
||
public string CheckData(string orderID,string sts)
|
||
{
|
||
DataProvider.Instance.Orders.CheckData(orderID, sts);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
/// <summary>
|
||
/// 查询订单
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<CgOrder> GetTableOrder(CgOrder order)
|
||
{
|
||
|
||
DataTable tb= DataProvider.Instance.Orders.GetTableOrder(order);
|
||
if(tb!=null)
|
||
{
|
||
return ConvertHelper<CgOrder>.ConvertToList(tb);
|
||
|
||
}
|
||
return null;
|
||
|
||
}
|
||
/// <summary>
|
||
/// 新增采购单
|
||
/// </summary>
|
||
/// <param name="orderInfo"></param>
|
||
/// <param name="userId"></param>
|
||
/// <param name="endDate"></param>
|
||
/// <returns></returns>
|
||
|
||
public string AddOrderPlanData(List<CgOrderInfo> orderInfo,string userId)
|
||
{
|
||
|
||
IEnumerable<IGrouping<string, CgOrderInfo>> query = orderInfo.GroupBy(r => r.PROVIDER_ID);
|
||
foreach (IGrouping<string, CgOrderInfo> info in query)
|
||
{
|
||
List<CgOrderInfo> oInfo = info.ToList<CgOrderInfo>();
|
||
string orderId = IBussFactory<WMS.Business.Base.BussDocumentTable>.Instance().GetDocumentStream("采购单");
|
||
CgOrder order = new CgOrder();
|
||
// order.ORDERID = orderId;
|
||
order.PROVIDER_ID = info.Key;//.PROVIDER_ID;
|
||
order.ENDDATE = oInfo.Max(r=>r.GOODSENDDATE);
|
||
order.CREATE_MAN = userId;
|
||
order.CGORDERID = orderId;
|
||
DataProvider.Instance.Orders.InCgorder(order);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
foreach(CgOrderInfo inOrderData in oInfo)
|
||
{
|
||
inOrderData.CGORDERID = orderId;
|
||
DataProvider.Instance.Orders.InCgOrderInfo(inOrderData);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
|
||
}
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
|
||
}
|
||
/// <summary>
|
||
/// 关闭计划单
|
||
/// </summary>
|
||
/// <param name="ORDERID"></param>
|
||
/// <param name="men"></param>
|
||
/// <returns></returns>
|
||
public string UpdatePlanClose(string ORDERID,string men)
|
||
{
|
||
DataProvider.Instance.Orders.UpdatePlanClose(ORDERID, men);
|
||
|
||
logList.Add(DataProvider.Instance.logData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
/// <summary>
|
||
/// 更新计划的供应商
|
||
/// </summary>
|
||
/// <param name="orderId"></param>
|
||
/// <param name="providerId"></param>
|
||
/// <returns></returns>
|
||
public string UpdatePlanProvider(string orderId, string providerId)
|
||
{
|
||
DataProvider.Instance.Orders.UpdatePlanProvider(orderId, providerId);
|
||
|
||
logList.Add(DataProvider.Instance.logData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 查询采购计划
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<CgOrderPlan> GetOrderPlanData()
|
||
{
|
||
DataTable tb = DataProvider.Instance.Orders.GetOrderPlanData();
|
||
List<CgOrderPlan> list = ConvertHelper<CgOrderPlan>.ConvertToList(tb);
|
||
return list;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 根据物料查询正式或者虚拟库存
|
||
/// </summary>
|
||
/// <param name="goodsID"></param>
|
||
/// <returns></returns>
|
||
public List<MIStockModel> GetGoodsData(string goodsID,bool bKc)
|
||
{
|
||
DataTable dtable = new DataTable();
|
||
if(bKc)
|
||
{
|
||
dtable = DataProvider.Instance.Orders.GetGoodsData(goodsID, "T_MI_STOCK");
|
||
}
|
||
else
|
||
{
|
||
dtable = DataProvider.Instance.Orders.GetGoodsData(goodsID, "T_CG_STOCK");
|
||
}
|
||
|
||
List<MIStockModel> list = ConvertHelper<MIStockModel>.ConvertToList(dtable);
|
||
|
||
return list;
|
||
}
|
||
public string ExcePlanOrder(List<CgOrderPlan> orderList)
|
||
{
|
||
string acceptData = IBussFactory<WMS.Business.Base.BussDocumentTable>.Instance().GetDocumentStream("采购计划单");
|
||
for (int i = 0; i < orderList.Count; i++)
|
||
{
|
||
CgOrderPlan order = orderList[i];
|
||
order.ORDERID = acceptData;
|
||
DataProvider.Instance.Orders.AddCgOrderPlan(order);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
if (i==0)
|
||
{
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
|
||
}
|
||
|
||
}
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
|
||
}
|
||
public List<CgOrderPlan> GetPlanExce(string goodsId,decimal goodNum,string orderID)
|
||
{
|
||
List<CgOrderPlan> planCg = new List<CgOrderPlan>();
|
||
|
||
DataTable tb = DataProvider.Instance.GoodsMaterial.GetGoodsMaterialList(goodsId);
|
||
if (tb != null)
|
||
{
|
||
if (tb.Rows.Count > 0)
|
||
{
|
||
|
||
foreach (DataRow rwGoods in tb.Rows)
|
||
{
|
||
CgOrderPlan cgGoodData = new CgOrderPlan();
|
||
//cgGoodData.INVENTORY_ITEM_ID = rwGoods["INVENTORY_ITEM_ID"].ToString();
|
||
//cgGoodData.ITEM_DESCRIPTION = rwGoods["ITEM_DESCRIPTION"].ToString();
|
||
decimal stand_num = decimal.Parse(rwGoods["STAND_NUM"].ToString());
|
||
cgGoodData.CGNUM = goodNum * stand_num;
|
||
cgGoodData.FGOODSID = goodsId;
|
||
cgGoodData.XQNUM = cgGoodData.CGNUM;
|
||
cgGoodData.TASKID = orderID;
|
||
string a = rwGoods["SEMISTS"].ToString();
|
||
cgGoodData.SEMISTS = Convert.ToBoolean(int.Parse(rwGoods["SEMISTS"].ToString()));
|
||
|
||
cgGoodData.BUY_NUM = decimal.Parse(rwGoods["BUY_NUM"].ToString());
|
||
cgGoodData.OCCUPY = decimal.Parse(rwGoods["OCCUPY"].ToString());
|
||
cgGoodData.FGOODSNAMAE = rwGoods["FGOODSNAMAE"].ToString();
|
||
planCg.Add(cgGoodData);
|
||
if (cgGoodData.SEMISTS)
|
||
{
|
||
//List<CgOrderPlan> planCgz = GetPlanExce(cgGoodData.INVENTORY_ITEM_ID, cgGoodData.CGNUM, cgGoodData.TASKID);
|
||
//planCg.AddRange(planCgz);
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
return planCg;
|
||
}
|
||
/// <summary>
|
||
/// 根据采购销售订单拆BOM
|
||
/// </summary>
|
||
/// <param name="goodsId"></param>
|
||
/// <returns></returns>
|
||
public List<CgOrderPlan> GetPlanExce(Dictionary<string,decimal> goodsId,string OrdrID)
|
||
{
|
||
List<CgOrderPlan> planCg = new List<CgOrderPlan>();
|
||
foreach (KeyValuePair<string ,decimal> keyData in goodsId)
|
||
{
|
||
|
||
string goodId = keyData.Key;
|
||
decimal goodNum = keyData.Value;
|
||
DataTable tb= DataProvider.Instance.GoodsMaterial.GetGoodsMaterialList(goodId);
|
||
if(tb!=null)
|
||
{
|
||
if (tb.Rows.Count == 0)
|
||
{
|
||
///需要增加查询基础物料表
|
||
|
||
return planCg;
|
||
|
||
}
|
||
else
|
||
{
|
||
foreach (DataRow rwGoods in tb.Rows)
|
||
{
|
||
CgOrderPlan cgGoodData = new CgOrderPlan();
|
||
//cgGoodData.INVENTORY_ITEM_ID = rwGoods["INVENTORY_ITEM_ID"].ToString();
|
||
//cgGoodData.ITEM_DESCRIPTION = rwGoods["ITEM_DESCRIPTION"].ToString();
|
||
decimal stand_num = decimal.Parse(rwGoods["STAND_NUM"].ToString());
|
||
cgGoodData.CGNUM = goodNum * stand_num;
|
||
cgGoodData.FGOODSID = goodId;
|
||
cgGoodData.XQNUM = cgGoodData.CGNUM;
|
||
string a = rwGoods["SEMISTS"].ToString();
|
||
cgGoodData.SEMISTS = Convert.ToBoolean(int.Parse(rwGoods["SEMISTS"].ToString()));
|
||
cgGoodData.BUY_NUM =decimal.Parse(rwGoods["BUY_NUM"].ToString());
|
||
cgGoodData.OCCUPY = decimal.Parse(rwGoods["OCCUPY"].ToString());
|
||
cgGoodData.TASKID = OrdrID;
|
||
cgGoodData.FGOODSNAMAE = rwGoods["FGOODSNAMAE"].ToString();
|
||
planCg.Add(cgGoodData);
|
||
|
||
if (cgGoodData.SEMISTS)
|
||
{
|
||
//List<CgOrderPlan> planCgz = GetPlanExce(cgGoodData.INVENTORY_ITEM_ID, cgGoodData.CGNUM, cgGoodData.TASKID);
|
||
//planCg.AddRange(planCgz);
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
}
|
||
return planCg;
|
||
}
|
||
|
||
}
|
||
return null;
|
||
}
|
||
public List<OrdersModel> GetOrderDate(string benDate, string endDate)
|
||
{
|
||
DataTable dt = DataProvider.Instance.Orders.GetOrderDate(benDate, endDate);
|
||
List<OrdersModel> list = ConvertHelper<OrdersModel>.ConvertToList(dt);
|
||
|
||
return list;
|
||
}
|
||
|
||
#region 查询
|
||
/// <summary>
|
||
/// 接口增加出库订单
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public string InsertDataOrderCk()
|
||
{
|
||
|
||
DataTable tb= DataProvider.Instance.Orders.InsertOrderData();
|
||
if(tb!=null)
|
||
{
|
||
foreach(DataRow row in tb.Rows)
|
||
{
|
||
string orderId = row[""].ToString();
|
||
|
||
DataTable tbInfo = DataProvider.Instance.Orders.GetOrderInfo(orderId);
|
||
if(tbInfo!=null)
|
||
{
|
||
OrdersModel order = new OrdersModel();
|
||
order.ORDER_ID = orderId;
|
||
order.Ck_type = "0";
|
||
order.Cus_membername = "";
|
||
order.CUSTOMERPHONE = "";
|
||
order.CUSTOMERPROVINCE = "";
|
||
order.CUSTOMERCITY = "";
|
||
order.CUSTOMERDISTRICT = "";
|
||
order.CUSTOMERADDRESS = "";
|
||
order.GOODS_PRICE = 0;
|
||
order.CREATE_MAN = "";
|
||
|
||
DataProvider.Instance.Orders.AddOrders(order);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
foreach (DataRow info in tbInfo.Rows)
|
||
{
|
||
OrderDetailModel detailModel = new OrderDetailModel();
|
||
|
||
//detailModel.INVENTORY_ITEM_ID = "";
|
||
detailModel.PACKING_NUM = 0;
|
||
detailModel.UNIT = "";
|
||
DataProvider.Instance.OrderDetail.AddOrderDetail(detailModel);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
|
||
|
||
TaCmtOrRak();
|
||
|
||
|
||
}
|
||
}
|
||
return this.ErrText;
|
||
}
|
||
|
||
return ErrText;
|
||
}
|
||
/// <summary>
|
||
/// 查询
|
||
/// </summary>
|
||
/// <param name="model">实体</param>
|
||
/// <returns></returns>
|
||
public List<OrdersModel> GetOrders(OrdersModel model)
|
||
{
|
||
DataTable dt = DataProvider.Instance.Orders.GetOrders(model);
|
||
List<OrdersModel> list = ConvertHelper<OrdersModel>.ConvertToList(dt);
|
||
|
||
return list;
|
||
}
|
||
#endregion
|
||
|
||
#region 新增或修改
|
||
/// <summary>
|
||
/// 新增或修改
|
||
/// </summary>
|
||
/// <param name="model">实体</param>
|
||
/// <param name="flg">0 新增,1 修改</param>
|
||
/// <returns></returns>
|
||
public string InsOrUpdOrders(OrdersModel model, int flg)
|
||
{
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
if (flg == 0)
|
||
{
|
||
DataProvider.Instance.Orders.AddOrders(model);
|
||
}
|
||
else
|
||
{
|
||
DataProvider.Instance.Orders.UpdateOrders(model);
|
||
}
|
||
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
return this.ErrText;
|
||
|
||
}
|
||
#endregion
|
||
|
||
#region 打印
|
||
/// <summary>
|
||
/// 打印
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public string Print(OrdersModel model, PrintInfoModel print_model)
|
||
{
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
|
||
DataProvider.Instance.Orders.UpdateOrders(model);
|
||
|
||
DataProvider.Instance.PrintInfo.InsertPrintInfo(print_model);
|
||
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
return this.ErrText;
|
||
}
|
||
#endregion
|
||
|
||
#region 新增或修改主表明细表一起
|
||
/// <summary>
|
||
/// 新增或修改
|
||
/// </summary>
|
||
/// <param name="model">通知单实体</param>
|
||
/// <param name="list">明细集合</param>
|
||
/// <param name="flg">0 新增,1 修改</param>
|
||
/// <returns></returns>
|
||
public string InsOrUpdate(OrdersModel model, List<OrderDetailModel> list, int flg)
|
||
{
|
||
|
||
if (flg == 0)//新增
|
||
{
|
||
string OutId = IBussFactory<WMS.Business.Base.BussDocumentTable>.Instance().GetDocumentStream("出库通知单");
|
||
model.ORDER_ID = OutId;
|
||
DataProvider.Instance.Orders.AddOrders(model);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
foreach (OrderDetailModel insetM in list)
|
||
{
|
||
insetM.STORAGE_ID = model.Storage_id;
|
||
insetM.ORDER_ID = OutId;
|
||
insetM.BUSINESSID = model.BUSINESSORDERID;
|
||
DataProvider.Instance.OrderDetail.AddOrderDetail(insetM);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
|
||
}
|
||
else if (flg == 1)//修改 先删除以前明细,再新增新明细
|
||
{
|
||
DataProvider.Instance.Orders.UpdateOrders(model);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
List<OrderDetailModel> lis = new List<OrderDetailModel>();
|
||
OrderDetailModel mo = new OrderDetailModel();
|
||
mo.ORDER_ID = model.ORDER_ID;
|
||
lis.Add(mo);
|
||
// DataProvider.Instance.OrderDetail.DelOrderDetail(lis);
|
||
// DataProvider.Instance.OrderDetail.AddOrderDetail(list);
|
||
}
|
||
else
|
||
{
|
||
return null;
|
||
}
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
return this.ErrText;
|
||
}
|
||
#endregion
|
||
|
||
public void UpdateLock(string locid)
|
||
{
|
||
string lockloc = string.Empty;
|
||
string Xloc = locid.Substring(3, 2).ToString();
|
||
string Yloc = locid.Substring(6, 2).ToString();
|
||
string Zloc = locid.Substring(locid.Length - 1, 1);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
if (int.Parse(Xloc) > 0 && int.Parse(Xloc) < 4)
|
||
{
|
||
for (int j = 1; j < 4; j++)
|
||
{
|
||
lockloc = "JW-" + j.ToString().PadLeft(2, '0') + "-" + Yloc + "-" + Zloc.PadLeft(2, '0');
|
||
DataProvider.Instance.Orders.UpdateLock(lockloc);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
}
|
||
else if (int.Parse(Xloc) > 4 && int.Parse(Xloc) < 11)
|
||
{
|
||
for (int j = 5; j < 11; j++)
|
||
{
|
||
lockloc = "JW-" + j.ToString().PadLeft(2, '0') + "-" + Yloc + "-" + Zloc.PadLeft(2, '0');
|
||
DataProvider.Instance.Orders.UpdateLock(lockloc);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
}
|
||
else if (int.Parse(Xloc) > 11 && int.Parse(Xloc) < 18)
|
||
{
|
||
for (int j = 12; j < 18; j++)
|
||
{
|
||
lockloc = "JW-" + j.ToString().PadLeft(2, '0') + "-" + Yloc + "-" + Zloc.PadLeft(2, '0');
|
||
DataProvider.Instance.Orders.UpdateLock(lockloc);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
}
|
||
else if (int.Parse(Xloc) > 18 && int.Parse(Xloc) < 25)
|
||
{
|
||
for (int j = 19; j < 25; j++)
|
||
{
|
||
lockloc = "JW-" + j.ToString().PadLeft(2, '0') + "-" + Yloc + "-" + Zloc.PadLeft(2, '0');
|
||
DataProvider.Instance.Orders.UpdateLock(lockloc);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
}
|
||
else if (int.Parse(Xloc) > 25 && int.Parse(Xloc) < 29)
|
||
{
|
||
for (int j = 26; j < 29; j++)
|
||
{
|
||
lockloc = "JW-" + j.ToString().PadLeft(2, '0') + "-" + Yloc + "-" + Zloc.PadLeft(2, '0');
|
||
DataProvider.Instance.Orders.UpdateLock(lockloc);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
}
|
||
TaCmtOrRak();
|
||
}
|
||
public string InsTMISTOCK(string loc_id)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.InsertTMISTOCK(loc_id);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return this.ErrText;
|
||
}
|
||
public string InsSDOrder(PickingWaveGoodsModel model)
|
||
{
|
||
MIStockModel queryMIStock = new MIStockModel();
|
||
queryMIStock.STORAGE_ID = model.STORAGE_ID;
|
||
queryMIStock.LOCATION_ID = model.LOC_ID;
|
||
|
||
DataTable tableMIStock = DataProvider.Instance.MIStock.GetMIStockDT(queryMIStock);
|
||
if(tableMIStock==null)
|
||
{
|
||
return "库存查询错误";
|
||
}
|
||
if (tableMIStock.Rows.Count==0)
|
||
{
|
||
return "库存查询错误";
|
||
}
|
||
string sts = tableMIStock.Rows[0]["sts"].ToString();
|
||
//if(sts == "1")
|
||
//{
|
||
// return "库位已经占用";
|
||
//}
|
||
string plcId = "0";
|
||
|
||
DataTable tb = DataProvider.Instance.PickingWaveGoods.GetTaskLocOutStatus(model.LOC_ID);
|
||
if (tb != null && tb.Rows.Count > 0)
|
||
{
|
||
//查询料箱是否已经产生出库任务
|
||
model.plcId = tb.Rows[0]["PLCID"].ToString();
|
||
}
|
||
else
|
||
{
|
||
model.plcId = DataProvider.Instance.AutoRkData.GetPlcId();
|
||
}
|
||
|
||
DataProvider.Instance.PickingWaveGoods.InsertPickingWaveGoods(model);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
//修改:更新该箱号的库存状态--以箱号为准
|
||
DataProvider.Instance.MIStock.UpdateMisLocBarCode(model.CTL,model.LOC_ID, "1");
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
return this.ErrText;
|
||
}
|
||
|
||
public string InsYK(string startmove,string endmove)
|
||
{
|
||
string orderstr = "YK" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
|
||
string plcId = DataProvider.Instance.AutoRkData.GetPlcId();
|
||
DataProvider.Instance.PickingWaveGoods.InsertCK(orderstr,startmove,endmove,plcId);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.MIStock.UpdateMisLoc(startmove, "1");
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.MIStock.UpdateYKLoc(endmove);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
return this.ErrText;
|
||
}
|
||
|
||
#region 删除
|
||
/// <summary>
|
||
/// 删除
|
||
/// </summary>
|
||
/// <param name="model">实体</param>
|
||
/// <returns></returns>
|
||
public string DelOrders(OrdersModel model)
|
||
{
|
||
|
||
DataProvider.Instance.Orders.DelOrders(model);
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
DataProvider.Instance.OrderDetail.DelOrder(model.ORDER_ID);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
return this.ErrText;
|
||
}
|
||
#endregion
|
||
|
||
#region 获得流水号
|
||
/// <summary>
|
||
/// 获得流水号
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public string GetSerialNum()
|
||
{
|
||
string str = DataProvider.Instance.Orders.GetSerialNum();
|
||
|
||
return str;
|
||
}
|
||
#endregion
|
||
|
||
#region 自动填充快递单号
|
||
/// <summary>
|
||
/// 自动填充快递单号
|
||
/// </summary>
|
||
/// <param name="list">出库单集合</param>
|
||
/// <returns></returns>
|
||
public string FillKD(List<OrdersModel> list)
|
||
{
|
||
//截取快递单号前面的
|
||
string str_No = list[0].EXPRESSNO.ToString().Substring(0, list[0].EXPRESSNO.ToString().Length - 5);
|
||
|
||
//获取集合第一个快递单号后四位
|
||
int no = Convert.ToInt32(list[0].EXPRESSNO.ToString().Substring(list[0].EXPRESSNO.ToString().Length - 5, 5));
|
||
|
||
//获取增量
|
||
//ExpressNORuleModel ruleModel = new ExpressNORuleModel();
|
||
//ruleModel.COM_ID = list[0].LOG_COM_ID;
|
||
//int addNum = Convert.ToInt32(DataProvider.Instance.ExpressNORule.GetRule(ruleModel).Rows[0]["ADDNUM"].ToString());//获取增量
|
||
|
||
|
||
foreach (OrdersModel model in list.FindAll(r => r.ORDER_ID != list[0].ORDER_ID))
|
||
{
|
||
// no += addNum;
|
||
model.EXPRESSNO = str_No + no.ToString();
|
||
InsOrUpdOrders(model, 1);
|
||
}
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
logList.Add(DataProvider.Instance.logData);
|
||
TaCmtOrRak();
|
||
|
||
return this.ErrText;
|
||
|
||
}
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 通过出库通知单 新增出库单明细、捡货单、捡货单明细
|
||
/// </summary>
|
||
/// <param name="ck"></param>
|
||
/// <returns></returns>
|
||
public string addCKOrderAndPickOrder(OrdersModel ck)
|
||
{
|
||
|
||
List<OrderDetailModel> listCKTab = new List<OrderDetailModel>();//出库通知单明细集合
|
||
List<PickingWaveModel> listPick = new List<PickingWaveModel>(); //捡货单集合
|
||
List<PickingWaveGoodsModel> listPickTab = new List<PickingWaveGoodsModel>(); //捡货单明细集合
|
||
|
||
//为出库通知单省、市、区、仓库、状态、出库通知单编号字段赋值
|
||
StorageOrderModel storOrderModel = new StorageOrderModel();
|
||
DataTable dt = DataProvider.Instance.AddressArea.GetAddressArea(ck.Customerprovince_Name, ck.Customercity_Name, ck.Customerdistrict_Name);
|
||
storOrderModel.TOWN_ID = dt.Rows[0][0].ToString();
|
||
ck.CUSTOMERDISTRICT = dt.Rows[0][0].ToString();
|
||
ck.CUSTOMERCITY = dt.Rows[0][1].ToString();
|
||
ck.CUSTOMERPROVINCE = dt.Rows[0][2].ToString();
|
||
DataTable table = DataProvider.Instance.StorageOrder.GetStorOrderDT(storOrderModel);
|
||
List<StorageOrderModel> storOrderList = ConvertHelper<StorageOrderModel>.ConvertToList(table);
|
||
if (storOrderList == null || storOrderList.Count == 0) { return "找不到配送仓库"; }
|
||
ck.Storage_id = storOrderList[0].STORAGE_ID;
|
||
ck.STATUS = "2";//已生成捡货单
|
||
// ck.ORDER_ID = DataProvider.Instance.Orders.GetSerialNum();
|
||
ck.CREATE_DATE = DateTime.Now;
|
||
|
||
|
||
Transaction = DataProvider.Instance.TranOracle;
|
||
|
||
|
||
//查找是否存在该客户 不存在首先新增客户
|
||
if (!string.IsNullOrEmpty(ck.Cus_guid))
|
||
{
|
||
CustomerModel c_model = new CustomerModel();
|
||
c_model.Guid = ck.Cus_guid;
|
||
|
||
DataTable dt2 = DataProvider.Instance.Customer.GetCustomer(c_model);
|
||
|
||
if (dt2.Rows.Count <= 0)
|
||
{
|
||
CustomerModel cus_Model = new CustomerModel();
|
||
cus_Model.Customer_id = ck.CUSTOMERMEMBERID;
|
||
cus_Model.Guid = ck.Cus_guid;
|
||
cus_Model.Customer_name = ck.Cus_membername;
|
||
cus_Model.Address = ck.CUSTOMERADDRESS;
|
||
|
||
DataProvider.Instance.Customer.AddCustomer(cus_Model);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
//增加出库通知单
|
||
DataProvider.Instance.Orders.AddOrders(ck);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
//新增消息
|
||
MessageModel messModel = new MessageModel();
|
||
messModel.ID = "CK" + DateTime.Now.ToString("yyyyMMddHHmmss") + DataProvider.Instance.Message.GetSerialNum();
|
||
messModel.MENU_FORM = "FrmOrders";
|
||
messModel.MESS_CONTENT = "新增出库通知单,单据编号:" + ck.ORDER_ID;
|
||
messModel.MESS_DATE = DateTime.Now;
|
||
messModel.MESS_DEP = ck.Storage_id;
|
||
messModel.MESS_FLAG = "0";
|
||
messModel.MESS_STAR = ck.CREATE_MAN;
|
||
messModel.MESS_STATUS = "0";
|
||
messModel.WORK_TYPE = "worktype011";
|
||
messModel.WORK_KIND = "0";
|
||
messModel.MESS_TYPE = "CK";
|
||
messModel.RELATIVE_NUMBER = ck.ORDER_ID;
|
||
messModel.STO_ID = ck.Storage_id;
|
||
DataProvider.Instance.Message.Add(messModel);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
|
||
string id = ck.SHOPORDERID;//店铺订单号
|
||
|
||
//占用库存记录
|
||
MIStockOccupyModel queryOccupy = new MIStockOccupyModel();
|
||
queryOccupy.DOCCTNUMBER = id;
|
||
List<MIStockOccupyModel> occupy = ConvertHelper<MIStockOccupyModel>.ConvertToList(DataProvider.Instance.MIStockOccupy.GetMIStockOccupyDT(queryOccupy));
|
||
|
||
|
||
//遍历占用库存记录,得捡货单明细
|
||
foreach (var item in occupy)
|
||
{
|
||
if (!listPick.Exists(p => p.AREA_ID == item.AREA_ID)) {
|
||
//捡货单
|
||
PickingWaveModel pick = new PickingWaveModel();
|
||
pick.CREATE_DATE = DateTime.Now;
|
||
pick.CREATE_PERSON = ck.CREATE_MAN;
|
||
pick.CREATE_PERSON_NAME = ck.Create_man_Name;
|
||
pick.PRINT_COUNT = 0;
|
||
pick.STORAGE_ID = item.STORAGE_ID;
|
||
pick.AREA_ID = item.AREA_ID;
|
||
//增加捡货单
|
||
pick.PICKINGID = DataProvider.Instance.PickingWave.InsertPickingWave(pick);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
listPick.Add(pick);
|
||
//新增消息
|
||
messModel = new MessageModel();
|
||
messModel.ID = "JH" + DateTime.Now.ToString("yyyyMMddHHmmss") + DataProvider.Instance.Message.GetSerialNum();
|
||
messModel.MENU_FORM = "FrmPickingWave";
|
||
messModel.MESS_CONTENT = "新增捡货单,单据编号:" + pick.PICKINGID;
|
||
messModel.MESS_DATE = DateTime.Now;
|
||
messModel.MESS_DEP = item.STORAGE_ID;
|
||
messModel.MESS_FLAG = "0";
|
||
messModel.MESS_STAR = pick.CREATE_PERSON;
|
||
messModel.MESS_STATUS = "0";
|
||
messModel.WORK_TYPE = "worktype012";
|
||
messModel.WORK_KIND = "0";
|
||
messModel.MESS_TYPE = "JH";
|
||
messModel.RELATIVE_NUMBER = pick.PICKINGID;
|
||
messModel.STO_ID = item.STORAGE_ID;
|
||
DataProvider.Instance.Message.Add(messModel);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
|
||
//JWGoodsInfoModel goods = ConvertHelper<JWGoodsInfoModel>.ConvertToList(DataProvider.Instance.Goods.GetGoodsDataTable(item.INVENTORY_ITEM_ID, "", "", ""))[0];
|
||
MIStockModel mistock = new MIStockModel();
|
||
mistock.PUTIN_ID = item.PUTIN_ID;
|
||
mistock.STOCK_ID = item.STOCK_ID;
|
||
mistock.LOCATION_ID = item.LOCATION_ID;
|
||
//mistock.INVENTORY_ITEM_ID = item.INVENTORY_ITEM_ID;
|
||
mistock = ConvertHelper<MIStockModel>.ConvertToList(DataProvider.Instance.MIStock.GetMIStockDT(mistock))[0];
|
||
|
||
////捡货单明细
|
||
//PickingWaveGoodsModel pickTab = new PickingWaveGoodsModel();
|
||
//pickTab.DOCCTNUMBER = item.DOCCTNUMBER;
|
||
//pickTab.INVENTORY_ITEM_ID = item.INVENTORY_ITEM_ID;
|
||
//pickTab.GOODS_NUM = item.OCCUPY_NUM;
|
||
//pickTab.LOC_ID = item.LOCATION_ID;
|
||
//pickTab.OUT_ID = ck.ORDER_ID;
|
||
//pickTab.PICKINGID = listPick.Find(p=>p.AREA_ID == item.AREA_ID).PICKINGID;
|
||
////pickTab.MISTOCK_NUM;
|
||
//pickTab.PRICE = goods.PRICE;
|
||
//pickTab.PRODUCTION_DATE = mistock.PRODUCTION_DATE;
|
||
//pickTab.PROVIDER_ID = mistock.PROVIDER_ID;
|
||
//pickTab.PUTIN_ID = mistock.PUTIN_ID;
|
||
////pickTab.REMARK;
|
||
//pickTab.SCALE_UNIT = goods.SCALE_UNIT;
|
||
////pickTab.SKU_ID ;
|
||
//pickTab.SPECIFICATION = goods.SPECIFICATION;
|
||
//pickTab.UNIT = goods.UNIT;
|
||
//pickTab.WARE_DATE = mistock.WARE_DATE;
|
||
|
||
|
||
////出库通知单明细
|
||
//if(listCKTab.Exists(p=>p.INVENTORY_ITEM_ID == pickTab.INVENTORY_ITEM_ID)){//已有该商品
|
||
// listCKTab.Find(p => p.INVENTORY_ITEM_ID == pickTab.INVENTORY_ITEM_ID).GOODS_NUM += pickTab.GOODS_NUM;
|
||
// listCKTab.Find(p => p.INVENTORY_ITEM_ID == pickTab.INVENTORY_ITEM_ID).PICK_NUM += pickTab.GOODS_NUM;
|
||
// listCKTab.Find(p => p.INVENTORY_ITEM_ID == pickTab.INVENTORY_ITEM_ID).TOTAL_VOLUME += goods.GVOLUME;
|
||
// pickTab.PICKING_NUM += pickTab.GOODS_NUM;
|
||
//}else{//尚无该商品
|
||
// OrderDetailModel ckTab = new OrderDetailModel();
|
||
// ckTab.BarCode = goods.BARCODE;
|
||
// ckTab.BUSINESSID = ck.BUSINESSORDERID;
|
||
// ckTab.ORDER_ID = ck.ORDER_ID;
|
||
// ckTab.INVENTORY_ITEM_ID = goods.INVENTORY_ITEM_ID;
|
||
// ckTab.GOODS_NUM = pickTab.GOODS_NUM;
|
||
// ckTab.GOODS_TYPE_ID = goods.GOODS_TYPE_ID;
|
||
// ckTab.GVOLUME = goods.GVOLUME;
|
||
// ckTab.Location_id = pickTab.LOC_ID;
|
||
// ckTab.PICK_NUM = pickTab.GOODS_NUM;
|
||
// ckTab.PRICE = goods.PRICE;
|
||
// ckTab.SCALE_UNIT = goods.SCALE_UNIT;
|
||
// ckTab.SPECIFICATION = goods.SPECIFICATION;
|
||
// ckTab.Storage_area_id = item.AREA_ID;
|
||
// ckTab.TOTAL_VOLUME = goods.GVOLUME;
|
||
// ckTab.UNIT = goods.UNIT;
|
||
// ckTab.Weith = goods.GROSS_WEIGHT;
|
||
// pickTab.PICKING_NUM = pickTab.GOODS_NUM;
|
||
// listCKTab.Add(ckTab);
|
||
//}
|
||
|
||
|
||
//listPickTab.Add(pickTab);
|
||
}
|
||
|
||
|
||
//新增出库通知单明细、捡货单明细
|
||
// DataProvider.Instance.OrderDetail.AddOrderDetail(listCKTab);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
foreach (var item in listPickTab)
|
||
{
|
||
DataProvider.Instance.PickingWaveGoods.InsertPickingWaveGoods(item);
|
||
logList.Add(DataProvider.Instance.logData);
|
||
}
|
||
|
||
|
||
TaCmtOrRak();
|
||
return ErrText;
|
||
}
|
||
}
|
||
}
|