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 } }