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.SC;
using WMS.Model.RK;
namespace WMS.Business.SC
{
public class BussPlanGoods:IBussFactory
{
#region 生产数量
///
/// 生产计划BOM解析
///
///
///
///
public List GetScBom(decimal numData,string goodsId)
{
List newProcess = new List();
DataTable tb = DataProvider.Instance.ProcessPlan.GetScPlanData(goodsId);
if (tb != null)
{
if (tb.Rows.Count > 0)
{
foreach (DataRow row in tb.Rows)
{
string semi = row["SEMISTS"].ToString();
GoodsMaterialModel goodModel = new GoodsMaterialModel();
goodModel.MATERIAL_ID = row["MATERIAL_ID"].ToString();
goodModel.MATERIAL_NAME = row["MATERIAL_NAME"].ToString();
goodModel.GOODS_ID = row["GOODS_ID"].ToString();
// goodModel.GOODS_NAME = row["GOODS_NAME"].ToString();
goodModel.SHELVES_NUM = decimal.Parse(row["SHELVES_NUM"].ToString());
goodModel.NEED_NUM = decimal.Parse(row["SCALING"].ToString())* numData;
decimal sc = goodModel.NEED_NUM - goodModel.SHELVES_NUM;
// goodModel.SC_NUM = sc > 0 ? sc : 0;
if (sc > 0)
{
goodModel.REMARK = "1";
goodModel.SC_NUM = sc;
goodModel.OUT_NUM = goodModel.SHELVES_NUM;
}
else
{
goodModel.REMARK = "0";
goodModel.OUT_NUM = goodModel.NEED_NUM;
goodModel.SC_NUM = 0;
}
newProcess.Add(goodModel);
if (semi == "1")
{
string good = row["MATERIAL_ID"].ToString();
List children = GetScBom(goodModel.NEED_NUM, good);
if(children!=null)
{
newProcess.AddRange(children);
}
}
}
}
}
return newProcess;
}
///
/// BOM解析
///
///
///
public List GetScPlanData(List goodsId)
{
List goodsInfo = new List();
foreach (OrderDetailModel info in goodsId)
{
string goodsID = info.GOOD_ID;
DataTable tb = DataProvider.Instance.ProcessPlan.GetScPlanGoods(goodsID);
if (tb != null)
{
if (tb.Rows.Count > 0)
{
GoodsMaterialModel goodModel = new GoodsMaterialModel();
goodModel.MATERIAL_ID = tb.Rows[0]["MATERIAL_ID"].ToString();
goodModel.MATERIAL_NAME = tb.Rows[0]["MATERIAL_NAME"].ToString();
goodModel.SHELVES_NUM = decimal.Parse(tb.Rows[0]["SHELVES_NUM"].ToString());
goodModel.NEED_NUM = info.NOWNUM;
goodModel.REMARK = "0";
decimal sc = goodModel.NEED_NUM - goodModel.SHELVES_NUM;
if(sc>0)
{
goodModel.SC_NUM = sc;
goodModel.OUT_NUM = goodModel.SHELVES_NUM;
}
else
{
goodModel.OUT_NUM = goodModel.NEED_NUM;
goodModel.SC_NUM = 0;
}
//goodModel.SC_NUM = sc > 0 ? sc : 0;
goodsInfo.Add(goodModel);
List materList = GetScBom(info.NOWNUM, goodsID);
if(materList.Count>0)
{
goodsInfo.AddRange(materList);
}
}
}
}
return goodsInfo;
}
///
/// 增加计划到任务表
///
///
///
///
///
public string AddPlanDataList(string begDate,string endDate , List goodsInfo,string storageId,string userid,string orderID )
{
if (goodsInfo != null)
{
string ordeId = IBussFactory.Instance().GetDocumentStream("生产计划单");
ProcessPlanModel planSc = new ProcessPlanModel();
planSc.STORAGE_ID = storageId;
planSc.PLAN_ID = ordeId;
planSc.PLAN_USERID = userid;
planSc.DATESTAR = DateTime.Parse(begDate);
planSc.DATEEND = DateTime.Parse(endDate);
for (int i=0;i< goodsInfo.Count;i++)
{
PlanGoodsModel model = goodsInfo[i];
model.PLAN_ID = ordeId;
DataProvider.Instance.PlanGoods.AddPlanGoods(model);
logList.Add(DataProvider.Instance.logData);
if (i == 0)
{
Transaction = DataProvider.Instance.TranOracle;
}
}
DataProvider.Instance.ProcessPlan.AddProcessPlan(planSc);
logList.Add(DataProvider.Instance.logData);
if (ordeId.Trim().Length > 0)
{
WareNoticeModel ware = new WareNoticeModel();
ware.WAREHOUSING_ID = ordeId;
ware.STATE = "6";
DataProvider.Instance.WareNotice.updateWareNoticeState(ware);
logList.Add(DataProvider.Instance.logData);
}
TaCmtOrRak();
}
return this.ErrText;
}
#endregion
#region BasicMethod
///
/// 增加一条数据
///
public string AddPlanGoods(PlanGoodsModel model)
{
DataProvider.Instance.PlanGoods.AddPlanGoods(model);
Transaction = DataProvider.Instance.TranOracle;
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
///
/// 更新一条数据
///
public string Update(PlanGoodsModel model)
{
DataProvider.Instance.PlanGoods.Update(model);
Transaction = DataProvider.Instance.TranOracle;
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
///
/// 删除一条数据
///
public string Delete(PlanGoodsModel model)
{
DataProvider.Instance.PlanGoods.Delete(model);
Transaction = DataProvider.Instance.TranOracle;
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
///
/// 获得数据列表
///
public List GetPlanGoodsList(PlanGoodsModel modle)
{
DataTable dt = DataProvider.Instance.PlanGoods.GetPlanGoodsList(modle);
if (dt != null)
{
List list = ConvertHelper.ConvertToList(dt);
return list;
}
return null;
}
#endregion BasicMethod
}
}