242 lines
8.5 KiB
C#
242 lines
8.5 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.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
|
|||
|
|
}
|
|||
|
|
}
|