BaoKai_202508-Wms-Jingwang..../WMS.Business/SC/BussPlanGoods.cs

242 lines
8.5 KiB
C#
Raw Normal View History

2025-08-24 09:35:55 +08:00
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
/// <summary>
/// 生产计划BOM解析
/// </summary>
/// <param name="listProcessRow"></param>
/// <param name="goodsId"></param>
/// <returns></returns>
public List<GoodsMaterialModel> GetScBom(decimal numData,string goodsId)
{
List<GoodsMaterialModel> newProcess = new List<GoodsMaterialModel>();
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<GoodsMaterialModel> children = GetScBom(goodModel.NEED_NUM, good);
if(children!=null)
{
newProcess.AddRange(children);
}
}
}
}
}
return newProcess;
}
/// <summary>
/// BOM解析
/// </summary>
/// <param name="goodsId"></param>
/// <returns></returns>
public List<GoodsMaterialModel> GetScPlanData(List<OrderDetailModel> goodsId)
{
List<GoodsMaterialModel> goodsInfo = new List<GoodsMaterialModel>();
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<GoodsMaterialModel> materList = GetScBom(info.NOWNUM, goodsID);
if(materList.Count>0)
{
goodsInfo.AddRange(materList);
}
}
}
}
return goodsInfo;
}
/// <summary>
/// 增加计划到任务表
/// </summary>
/// <param name="begDate"></param>
/// <param name="endDate"></param>
/// <param name="goodsInfo"></param>
/// <returns></returns>
public string AddPlanDataList(string begDate,string endDate , List<PlanGoodsModel> goodsInfo,string storageId,string userid,string orderID )
{
if (goodsInfo != null)
{
string ordeId = IBussFactory<Base.BussDocumentTable>.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
/// <summary>
/// 增加一条数据
/// </summary>
public string AddPlanGoods(PlanGoodsModel model)
{
DataProvider.Instance.PlanGoods.AddPlanGoods(model);
Transaction = DataProvider.Instance.TranOracle;
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
/// <summary>
/// 更新一条数据
/// </summary>
public string Update(PlanGoodsModel model)
{
DataProvider.Instance.PlanGoods.Update(model);
Transaction = DataProvider.Instance.TranOracle;
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
/// <summary>
/// 删除一条数据
/// </summary>
public string Delete(PlanGoodsModel model)
{
DataProvider.Instance.PlanGoods.Delete(model);
Transaction = DataProvider.Instance.TranOracle;
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
/// <summary>
/// 获得数据列表
/// </summary>
public List<PlanGoodsModel> GetPlanGoodsList(PlanGoodsModel modle)
{
DataTable dt = DataProvider.Instance.PlanGoods.GetPlanGoodsList(modle);
if (dt != null)
{
List<PlanGoodsModel> list = ConvertHelper<PlanGoodsModel>.ConvertToList(dt);
return list;
}
return null;
}
#endregion BasicMethod
}
}