| | |
| | | using Demo.Model.Model; |
| | | using Demo.Model.Model.PODemandPlan; |
| | | using K3Cloud.Extend.Utils; |
| | | using Kingdee.BOS.App.Data; |
| | | using Kingdee.BOS.Core; |
| | | using Kingdee.BOS.Core.Bill.PlugIn; |
| | | using Kingdee.BOS.Core.Const; |
| | | using Kingdee.BOS.Core.DynamicForm; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; |
| | | using Kingdee.BOS.Core.Metadata; |
| | | using Kingdee.BOS.Core.Metadata.EntityElement; |
| | | using Kingdee.BOS.JSON; |
| | | using Kingdee.BOS.KDThread; |
| | |
| | | using Kingdee.BOS.Util; |
| | | using Kingdee.K3.Core.SCM.STK; |
| | | using Kingdee.K3.SCM.ServiceHelper; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using NPOI.HSSF.UserModel; |
| | | using NPOI.SS.Formula.Functions; |
| | | using NPOI.SS.UserModel; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | using System.Diagnostics; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Runtime.CompilerServices; |
| | | using System.Runtime.InteropServices; |
| | | using System.Text; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using System.Web; |
| | | using System.Windows.Documents; |
| | | using ZD.Cloud.Logger; |
| | | using ZD.Cloud.WebApi; |
| | | using ZD.Share.Common; |
| | |
| | | string PathName = "日计划导入模板.xlsx"; |
| | | List<PRD_Inventory> ListInventory;//库存明细 |
| | | List<PRD_Inventory> ListInventoryByStockOrgId;//物料总库存 |
| | | |
| | | private bool isSearched = false; |
| | | |
| | | public override void DataChanged(DataChangedEventArgs e) |
| | | { |
| | | if (!isSearched) return; |
| | | base.DataChanged(e); |
| | | var columns = new List<string>() { "", "" }; |
| | | for (int i = 0; i < 100; i++) |
| | | { |
| | | columns.Add("FT" + i.ToString()); |
| | | } |
| | | var model = this.View.Model; |
| | | if (columns.Contains(e.Field.Key)) |
| | | { |
| | | var sum = columns.Select(x => Convert.ToDouble(model.GetValue(x, e.Row))).Sum();//日计划总和 |
| | | var scOrderCount = Convert.ToDouble(model.GetValue("FOrderQuantity", e.Row));//生产订单数量 |
| | | var FQTYLS = Convert.ToDouble(model.GetValue("FQTYLS", e.Row));//历史 |
| | | this.View.Model.SetValue("FNoScheduled", scOrderCount - sum - FQTYLS, e.Row); |
| | | this.View.Model.SetValue("FDayPlanQuantity", sum, e.Row); |
| | | } |
| | | } |
| | | public override void BarItemClick(BarItemClickEventArgs e) |
| | | { |
| | | base.BarItemClick(e); |
| | |
| | | } |
| | | if (e.BarItemKey.ToUpper() == "TBSEARCH") |
| | | { |
| | | isSearched = false; |
| | | SearchList(); |
| | | isSearched = true; |
| | | } |
| | | if (e.BarItemKey.ToUpper() == "TBLOCK") |
| | | { |
| | |
| | | if (e.BarItemKey.ToUpper() == "TBCOMPLETE") |
| | | { |
| | | COMPLETE(); |
| | | |
| | | } |
| | | //提料计划 |
| | | if (e.BarItemKey.ToUpper() == "TBEXTRACTION") |
| | |
| | | base.EntryBarItemClick(e); |
| | | if (e.BarItemKey.ToUpper() == "TBEDIT") |
| | | { |
| | | isSearched = false; |
| | | SearchListEdit(); |
| | | isSearched = true; |
| | | } |
| | | } |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public void ExportExcel() |
| | | { |
| | | List<string> Title = new List<string> {"销售订单号", "生产订单号*","生产组织*", "生产车间*", "生产资源", "产品代码*", "产品名称", "规格型号", "计量单位", |
| | | List<string> Title = new List<string> {"销售订单号", "生产订单号*","生产订单明细行号*", "生产车间*", "生产资源", "产品代码*", "产品名称", "规格型号", "计量单位", |
| | | "批次号","销售订单数量","生产订单数量","总齐套数量","交货日期*","订单等级*"}; |
| | | /* |
| | | ,"T0","T1","T2","T3","T4","T5","T6","T7", |
| | |
| | | string sql = $"/*dialect*/update t1 set t1.FHLockedSub=1 from Sc_WorkBillSortBillSub t1 join Sc_WorkBillSortBillMain t2 on t1.FID = t2.FID where FHMASTERDATE between DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate())"; |
| | | sqlList.Add(sql); |
| | | int result = DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | if (result > 0) |
| | | { |
| | | //锁定后生成日计划用料清单 及 提料计划 |
| | | DayPlanPPBomBillBatch(); |
| | | Extraction(); |
| | | SearchList(); |
| | | this.View.ShowMessage("操作成功"); |
| | | } |
| | | else |
| | | this.View.ShowMessage("操作失败,联系管理员!"); |
| | | //if (result > 0) |
| | | //{ |
| | | //锁定后生成日计划用料清单 及 提料计划 |
| | | DayPlanPPBomBillBatch(); |
| | | Extraction(); |
| | | SearchList(); |
| | | this.View.ShowMessage("操作成功"); |
| | | //} |
| | | //else |
| | | // this.View.ShowMessage("操作失败,联系管理员!"); |
| | | } |
| | | /// <summary> |
| | | /// 解锁 |
| | |
| | | sql = $"/*dialect*/update t1 set t1.FHLockedSub=0 from Sc_WorkBillSortBillSub t1 join Sc_WorkBillSortBillMain t2 on t1.FID = t2.FID where FHMASTERDATE between DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate()) and t1.FID = { Convert.ToString(item["FDayPlanWorkID"])} "; |
| | | sqlList.Add(sql); |
| | | } |
| | | int result = DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | if (result > 0) |
| | | { |
| | | SearchList(); |
| | | this.View.ShowMessage("操作成功"); |
| | | } |
| | | else |
| | | this.View.ShowMessage("操作失败,联系管理员!"); |
| | | SearchList(); |
| | | this.View.ShowMessage("操作成功"); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 保存功能 |
| | | /// </summary> |
| | | public void Save() |
| | | { |
| | | |
| | | List<string> sqlList = new List<string>(); |
| | | string sql; |
| | | //获取单据体信息 |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | DateTime date = DateTime.Now; |
| | | |
| | | DateTime date = Convert.ToDateTime(DateTime.Now.ToString("d")); |
| | | string _result = ""; |
| | | |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | if (Convert.ToInt32(current["FNoScheduled"]) < 0) |
| | | _result += "序号:" + Convert.ToString(current["SEQ"]) + ",日计划总数量超出生产订单数量"; |
| | | |
| | | } |
| | | if (_result != "") |
| | | { |
| | | this.View.ShowErrMessage(_result); |
| | | return; |
| | | } |
| | | |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FOrderQuantity={current["FOrderQuantity"]},FDayPlanQuantity={current["FDayPlanQuantity"]},FNoScheduled={current["FNoScheduled"]} where FID = {current["FDayPlanWorkID"]}"; |
| | | sqlList.Add(sql); |
| | | DateTime FBzDate = Convert.ToDateTime(Convert.ToDateTime(current["FBzDate"])); |
| | | DateTime end = Convert.ToDateTime(Convert.ToDateTime(current["FBzDate"]).AddDays(60).ToShortDateString());//最大日期 |
| | | JObject jsonRoot = new JObject(); |
| | | jsonRoot.Add("Creator", ""); |
| | | jsonRoot.Add("NeedUpDateFields", new JArray()); |
| | | jsonRoot.Add("NeedReturnFields", new JArray()); |
| | | jsonRoot.Add("IsDeleteEntry", "false"); |
| | | jsonRoot.Add("SubSystemId", ""); |
| | | jsonRoot.Add("IsVerifyBaseDataField", ""); |
| | | JObject jsonModel = new JObject(); |
| | | jsonModel.Add("FID", Convert.ToString(current["FDayPlanWorkID"])); |
| | | jsonModel.Add("FOrderQuantity", Convert.ToString(current["FOrderQuantity"])); |
| | | jsonModel.Add("FDayPlanQuantity", Convert.ToDecimal(current["FDayPlanQuantity"]) + Convert.ToDecimal(current["FQTYLS"])); |
| | | jsonModel.Add("FNoScheduled", Convert.ToString(current["FNoScheduled"])); |
| | | sql = $" /*dialect*/ select FEntryID, FHMASTERDATE from SC_WORKBILLSORTBILLSub where FID={Convert.ToString(current["FDayPlanWorkID"])} "; |
| | | List<DayPlanModel> dayPlanModel = new List<DayPlanModel>(); |
| | | dayPlanModel = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<DayPlanModel>(); |
| | | JArray Entry = new JArray(); |
| | | for (int i = 0; i <= 60; i++) |
| | | { |
| | | DateTime start = Convert.ToDateTime(date.AddDays(i).ToShortDateString()); |
| | | TimeSpan getDay = end.Subtract(start); |
| | | //编制日期+61天>date.AddDays(i).ToShortDateString() continue |
| | | if (getDay.Days < 0) |
| | | break; |
| | | sql = $"/*dialect*/update t1 set FHQTY='{Convert.ToString(current["FT" + "" + i + ""])}' from Sc_WorkBillSortBillSub t1 join " + |
| | | $" Sc_WorkBillSortBillMain t2 on t1.FID = t2.FID where FHMASTERDATE='{date.AddDays(i).ToShortDateString()}' and t2.FID='{Convert.ToString(current["FDayPlanWorkID"])}'"; |
| | | sqlList.Add(sql); |
| | | if (Convert.ToString(current["FT" + "" + i + ""]) == "" || Convert.ToString(current["FT" + "" + i + ""]) == "0") |
| | | continue; |
| | | JObject jsonFPOOrderEntry = new JObject(); |
| | | jsonFPOOrderEntry.Add("FHMasterDate", date.AddDays(i).ToShortDateString()); ;//主日期 |
| | | jsonFPOOrderEntry.Add("FHQty ", Convert.ToString(current["FT" + "" + i + ""])); ;//日计划数量 |
| | | List<DayPlanModel> _dayPlanModel = dayPlanModel.Where(x => x.FHMASTERDATE == date.AddDays(i)).ToList(); |
| | | if (_dayPlanModel.Count > 0) |
| | | { |
| | | jsonFPOOrderEntry.Add("FEntryID", _dayPlanModel.FirstOrDefault().FEntryID); ;//序号 |
| | | } |
| | | Entry.Add(jsonFPOOrderEntry); |
| | | } |
| | | |
| | | jsonModel.Add("FEntity", Entry); |
| | | jsonRoot.Add("Model", jsonModel); |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.Save("Paez_Sc_WorkBillAutoSortBill", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | | if (saveIsSuc != "TRUE") |
| | | { |
| | | LogHelper.Error("生产计划平台保存失败:" + jsonRoot.ToString()); |
| | | this.View.ShowMessage("数据储存失败!请联系管理员!"); |
| | | } |
| | | } |
| | | |
| | | int result = DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | if (result > 0) |
| | | { |
| | | this.View.ShowMessage("操作成功"); |
| | | SearchList(); |
| | | } |
| | | else |
| | | this.View.ShowMessage("操作失败,联系管理员!"); |
| | | |
| | | this.View.ShowMessage("操作成功"); |
| | | SearchList(); |
| | | } |
| | | /// <summary> |
| | | /// 齐套分析 |
| | |
| | | if (item.FOwnerId != null) |
| | | jsonModel.Add("FOwnerId", new JObject() { ["FNUMBER"] = item.FOwnerId }); |
| | | jsonRoot.Add("Model", jsonModel); |
| | | CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.Save("paez_CompleteAnalysisTemp", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | |
| | | ["IsVerifyBaseDataField"] = "false", |
| | | ["Model"] = Fentity |
| | | }; |
| | | CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.BatchSave("paez_CompleteAnalysisTemp", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | |
| | | LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID |
| | | LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID and a.FOwnerId = b.FOwnerId |
| | | LEFT join T_ORG_Organizations c on a.FOWNERID = c.FORGID |
| | | --join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID |
| | | join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID |
| | | where d.FAvailableComplete<>0 |
| | | --where T1.FMATERIALID in (105773) |
| | | "); |
| | |
| | | ) T1 |
| | | LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID |
| | | LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID |
| | | --join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID |
| | | --where d.FAvailableComplete<>0 |
| | | join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID |
| | | where d.FAvailableComplete<>0 |
| | | --where T1.FMATERIALID in (105773) |
| | | group by T1.FStockOrgId,T1.FMATERIALID |
| | | "); |
| | |
| | | //销售订单号 |
| | | string FSalOrder = Convert.ToString((this.Model.GetValue("FSalOrder"))); |
| | | if (!string.IsNullOrEmpty(FSalOrder)) |
| | | sqlwhere += $" and FHSeOrderBillNo='{FSalOrder}'"; |
| | | sqlwhere += $" and FHSeOrderBillNo like '%{FSalOrder}%'"; |
| | | //生产订单号 |
| | | string FScOrderMainNo = Convert.ToString((this.Model.GetValue("FScOrderMainNo"))); |
| | | if (!string.IsNullOrEmpty(FScOrderMainNo)) |
| | | sqlwhere += $" and FSCORDERNO='{FScOrderMainNo}'"; |
| | | sqlwhere += $" and FSCORDERNO like '%{FScOrderMainNo}%'"; |
| | | //物料 |
| | | if ((this.Model.GetValue("FMatralId") as DynamicObject) != null) |
| | | { |
| | |
| | | sqlwhere += $" and FPreparatDate='{FPreparatDate}'"; |
| | | try |
| | | { |
| | | string sql = @"/*dialect*/ select t1.*,isnull((select SUM(isnull(FNotProductNum,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FNotProductNum from Sc_WorkBillSortBillMain t1 |
| | | string sql = @"/*dialect*/ select t1.*,isnull((select SUM(isnull(FNotProductNum,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FNotProductNum ,isnull((select SUM(isnull(FHQTY,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FQTYLS |
| | | from Sc_WorkBillSortBillMain t1 |
| | | left join T_BD_MATERIAL t3 on t1.FHMaterID=t3.FMATERIALID |
| | | " + sqlwhere; |
| | | DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | |
| | | this.Model.SetValue("FSEQ", i + 1, i);//序号 |
| | | this.Model.SetValue("FCompleteSetCount", "", i);//总齐套数量 |
| | | this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//生产订单数量 |
| | | this.Model.SetValue("FSRCBILLENTRYSEQ", dt.Rows[i]["FSRCBILLENTRYSEQ"].ToString(), i);// |
| | | this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHOrderQty"].ToString(), i);//销售订单数量 |
| | | this.Model.SetValue("FBatch", dt.Rows[i]["FBatch"].ToString(), i);//批次号 |
| | | this.Model.SetValue("FUnit", dt.Rows[i]["FHUnitID"].ToString(), i);//计量单位 |
| | |
| | | this.Model.SetValue("FProductWorkShopId", dt.Rows[i]["FHWorkShopID"].ToString(), i);//生产车间 |
| | | this.Model.SetValue("FCompleteSetCount", dt.Rows[i]["FCompleteCount"].ToString(), i);//齐套数量 |
| | | this.Model.SetValue("FOrderQuantity", dt.Rows[i]["FOrderQuantity"].ToString(), i);//生产订单数量 |
| | | this.Model.SetValue("FDayPlanQuantity", dt.Rows[i]["FDayPlanQuantity"].ToString(), i);//日计划数量 |
| | | this.Model.SetValue("FDayPlanQuantity", Convert.ToDecimal(dt.Rows[i]["FDAYPLANQUANTITY"]) - Convert.ToDecimal(dt.Rows[i]["FQTYLS"]), i);//日计划数量 |
| | | this.Model.SetValue("FQTYLS", dt.Rows[i]["FQTYLS"].ToString(), i);//历史遗留 |
| | | this.Model.SetValue("FNoScheduled", dt.Rows[i]["FNoScheduled"].ToString(), i);//未排数量 |
| | | this.Model.SetValue("FDelaylnUM", dt.Rows[i]["FNotProductNum"].ToString(), i);//拖期数量 |
| | | sql = @"/*dialect*/SELECT * FROM Sc_WorkBillSortBillSub WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and FID=" + dt.Rows[i]["FID"].ToString(); |
| | |
| | | if (dr["FHLockedSub"].ToString() == "1") |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), i).Enabled = false; //单据体行锁定字段 |
| | | } |
| | | this.View.InvokeFieldUpdateService("FMatrailId", i);//调用数量值更新 |
| | | this.View.InvokeFieldUpdateService("FMatrailId", i);//GetControl |
| | | } |
| | | this.View.UpdateView(); |
| | | for (int j = 0; j < dt.Rows.Count; j++) |
| | |
| | | } |
| | | //销售订单号 |
| | | string FSalOrder = Convert.ToString((this.Model.GetValue("FSalOrder"))); |
| | | if (string.IsNullOrEmpty(FSalOrder)) |
| | | { |
| | | |
| | | } |
| | | else |
| | | sqlwhere += $" and FHSeOrderBillNo='{FSalOrder}'"; |
| | | if (!string.IsNullOrEmpty(FSalOrder)) |
| | | sqlwhere += $" and FHSeOrderBillNo like '%{FSalOrder}%'"; |
| | | //生产订单号 |
| | | string FScOrderMainNo = Convert.ToString((this.Model.GetValue("FScOrderMainNo"))); |
| | | if (string.IsNullOrEmpty(FScOrderMainNo)) |
| | | { |
| | | |
| | | } |
| | | else |
| | | sqlwhere += $" and FSCORDERNO='{FScOrderMainNo}'"; |
| | | if (!string.IsNullOrEmpty(FScOrderMainNo)) |
| | | sqlwhere += $" and FSCORDERNO like '%{FScOrderMainNo}%'"; |
| | | |
| | | //物料 |
| | | if ((this.Model.GetValue("FMatralId") as DynamicObject) != null) |
| | |
| | | sqlwhere += $" and FPreparatDate='{FPreparatDate}'"; |
| | | try |
| | | { |
| | | string sql = @"/*dialect*/ select t1.*,isnull((select SUM(isnull(FNotProductNum,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FNotProductNum from Sc_WorkBillSortBillMain t1 |
| | | string sql = @"/*dialect*/ select t1.*,isnull((select SUM(isnull(FNotProductNum,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FNotProductNum ,isnull((select SUM(isnull(FHQTY,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FQTYLS |
| | | from Sc_WorkBillSortBillMain t1 |
| | | left join T_BD_MATERIAL t3 on t1.FHMaterID=t3.FMATERIALID |
| | | " + sqlwhere; |
| | | DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | |
| | | this.Model.SetValue("FSEQ", i + 1, i);//序号 |
| | | this.Model.SetValue("FCompleteSetCount", "", i);//总齐套数量 |
| | | this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//生产订单数量 |
| | | this.Model.SetValue("FSRCBILLENTRYSEQ", dt.Rows[i]["FSRCBILLENTRYSEQ"].ToString(), i);// |
| | | this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHOrderQty"].ToString(), i);//销售订单数量 |
| | | this.Model.SetValue("FBatch", dt.Rows[i]["FBatch"].ToString(), i);//批次号 |
| | | this.Model.SetValue("FUnit", dt.Rows[i]["FHUnitID"].ToString(), i);//计量单位 |
| | |
| | | this.Model.SetValue("FProductWorkShopId", dt.Rows[i]["FHWorkShopID"].ToString(), i);//生产车间 |
| | | this.Model.SetValue("FCompleteSetCount", dt.Rows[i]["FCompleteCount"].ToString(), i);//齐套数量 |
| | | this.Model.SetValue("FOrderQuantity", dt.Rows[i]["FOrderQuantity"].ToString(), i);//生产订单数量 |
| | | this.Model.SetValue("FDayPlanQuantity", dt.Rows[i]["FDayPlanQuantity"].ToString(), i);//日计划数量 |
| | | this.Model.SetValue("FDayPlanQuantity", Convert.ToDecimal(dt.Rows[i]["FOrderQuantity"]) - Convert.ToDecimal(dt.Rows[i]["FQTYLS"]), i);//日计划数量 |
| | | this.Model.SetValue("FQTYLS", dt.Rows[i]["FQTYLS"].ToString(), i);//历史遗留 |
| | | this.Model.SetValue("FNoScheduled", dt.Rows[i]["FNoScheduled"].ToString(), i);//未排数量 |
| | | this.Model.SetValue("FDelaylnUM", dt.Rows[i]["FNotProductNum"].ToString(), i);//拖期数量 |
| | | sql = @"/*dialect*/SELECT * FROM Sc_WorkBillSortBillSub WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and FID=" + dt.Rows[i]["FID"].ToString(); |
| | |
| | | ["Model"] = model |
| | | }; |
| | | |
| | | CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.Save("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | |
| | | { |
| | | string sql = string.Format(@" |
| | | /*dialect*/ |
| | | select t1.FID,t1.FEntryID,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO, |
| | | t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType |
| | | select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO, |
| | | t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType |
| | | FROM Sc_WorkBillSortBillSub t1 |
| | | JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID |
| | | JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID |
| | |
| | | FOwnerID = dr["FORGNUMBER"].ToString(), |
| | | FEntrustPickOrgId = dr["FORGNUMBER"].ToString(), |
| | | FMOID = dr["FMOID"].ToString(), |
| | | FIssueType = dr["FIssueType"].ToString() |
| | | FIssueType = dr["FIssueType"].ToString(), |
| | | FMaterialType = dr["FMaterialType"].ToString(), |
| | | FDayPlanFSEQ = dr["FDayPlanFSEQ"].ToString(), |
| | | FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString() |
| | | }); |
| | | } |
| | | LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed); |
| | |
| | | model.Add("FHQty", _DayPlanMaterial[0].FHQty);//主产品数量:FHQty |
| | | model.Add("FHUnitID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHUnitID });//单位:FHUnitID |
| | | model.Add("FDayPlanFID", _DayPlanMaterial[0].FDayPlanFID);//日计划工单内码 |
| | | model.Add("FDayPlanFSEQ", _DayPlanMaterial[0].FDayPlanFSEQ);//日计划工单明细行号 |
| | | model.Add("FDayPlanFBillNo", _DayPlanMaterial[0].FDayPlanFBILLNO);//日计划工单单据编号 |
| | | JArray Entry = new JArray(); |
| | | int FSEQ = 1; |
| | | foreach (var _item in _DayPlanMaterial) |
| | | { |
| | | JObject ModelEnty = new JObject(); |
| | |
| | | ModelEnty.Add("FEntrustPickOrgId", new JObject() { ["Fnumber"] = _item.FEntrustPickOrgId });// |
| | | ModelEnty.Add("FMOID", _item.FMOID);// |
| | | ModelEnty.Add("FISSUETYPE", _item.FIssueType);// |
| | | |
| | | ModelEnty.Add("FMaterialType", _item.FMaterialType);// |
| | | // ModelEnty.Add("FSEQ", FSEQ);// |
| | | Entry.Add(ModelEnty); |
| | | FSEQ++; |
| | | |
| | | } |
| | | model.Add("FEntity", Entry); |
| | | |
| | |
| | | ["Creator"] = "", |
| | | ["NeedUpDateFields"] = new JArray(), |
| | | ["NeedReturnFields"] = new JArray(), |
| | | ["IsDeleteEntry"] = "false", |
| | | ["IsDeleteEntry"] = "true", |
| | | ["SubSystemId"] = "", |
| | | ["IsVerifyBaseDataField"] = "false", |
| | | ["Model"] = Fentity |
| | | }; |
| | | CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.BatchSave("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | | if (saveIsSuc != "TRUE") |
| | | { |
| | | LogHelper.Error(jsonRoot.ToString()); |
| | | LogHelper.Error(saveObj.ToString()); |
| | | } |
| | | Fentity = new JArray(); |
| | | } |
| | |
| | | //采购订单数据 |
| | | sql = @" |
| | | /*dialect*/ |
| | | select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,(t2.FQTY-t2.FPODemandPlanCount)FQTY,FPurchaseOrgId FStockOrgId,t5.FNUMBER FORGNumber,FSTOCKINQTY,FReceiveQty,FCloseStatus,FMRPCLOSESTATUS from t_PUR_POOrder t1 |
| | | select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,(t2.FQTY-t2.FPODemandPlanCount)FQTY,FPurchaseOrgId FStockOrgId,t5.FNUMBER FORGNumber,FSTOCKINQTY,FReceiveQty,FCloseStatus,FMRPCLOSESTATUS from t_PUR_POOrder t1 |
| | | join t_PUR_POOrderEntry t2 on t1.FID = t2.FID |
| | | join t_BD_Supplier t3 on t1.FSUPPLIERID = t3.FSUPPLIERID |
| | | join T_PUR_POORDERENTRY_R t4 on t2.FENTRYID = t4.FENTRYID |
| | | join T_ORG_Organizations t5 on t1.FPurchaseOrgId = t5.FORGID |
| | | where t2.FQTY-t2.FPODemandPlanCount>0 |
| | | and FCloseStatus in('A') and FMRPCLOSESTATUS in('A') |
| | | and t1.FBillTypeID in('83d822ca3e374b4ab01e5dd46a0062bd','6d01d059713d42a28bb976c90a121142') |
| | | "; |
| | | List<PurchaseInventory> PurchaseInventory = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<PurchaseInventory>(); |
| | | LogHelper.Info("[提料计划准备阶段]可用采购订单数据sql:" + sql); |
| | |
| | | List<DayPlanPpbom> DayPlanPpbom = ds.ToModelList<DayPlanPpbom>(); |
| | | //物料+库存组织分类 |
| | | var MaterialIDList = DayPlanPpbom.GroupBy(p => new { p.FMATERIALID, p.FStockOrgId }).Select(x => new PODemandPlanTemp { FMATERIALID = x.Key.FMATERIALID, FStockOrgId = x.Key.FStockOrgId }).ToList(); |
| | | var _MaterialIDList = MaterialIDList.Where(p => p.FMATERIALID == "162305").ToList(); |
| | | var _MaterialIDList = MaterialIDList.Where(p => p.FMATERIALID == "163165").ToList(); |
| | | LogHelper.Info("[提料计划准备阶段]总物料行数" + MaterialIDList.Count); |
| | | //提料计划数据集临时存储集合 |
| | | List<PODemandPlanTemp> PODemandPlanTemp = new List<PODemandPlanTemp>(); |
| | |
| | | foreach (var item in MaterialIDList) |
| | | { |
| | | //当前物料没有采购订单时 直接跳出 |
| | | List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).ToList(); |
| | | List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList(); |
| | | if (_PurchaseInventory.Count == 0) |
| | | { |
| | | LogHelper.Info("[提料计划开始]当前物料无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId); |
| | | continue; |
| | | } |
| | | //LogHelper.Info(item.FMATERIALID.ToString()); |
| | | //当前物料和库存组织对应的需进行提料计划的数据 |
| | | //当前物料和库存组织对应的需进行提料计划的数据 |
| | | List<DayPlanPpbom> _DayPlanPpbom = DayPlanPpbom.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId).ToList(); |
| | | decimal FMINPOQTY = _DayPlanPpbom.FirstOrDefault().FMINPOQTY;//最小起订量 |
| | | double FFIXLEADTIME = _DayPlanPpbom.FirstOrDefault().FFIXLEADTIME;//提前期 |
| | |
| | | foreach (var _item in _DayPlanPpbom) |
| | | { |
| | | i++; |
| | | _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).ToList(); |
| | | _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList(); |
| | | if (_PurchaseInventory.Count == 0) |
| | | { |
| | | LogHelper.Info("[提料计划开始]当前物料明细无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId); |
| | |
| | | FEntryIdList.Add(_item.FENTRYID); |
| | | NeedQty += _item.NeedQty; |
| | | |
| | | LogHelper.Info("记录明细id:" + _item.FENTRYID + ""); |
| | | LogHelper.Info("总需求量:" + NeedQty + ""); |
| | | LogHelper.Info("最小起订量:" + FMINPOQTY + ""); |
| | | //LogHelper.Info("记录明细id:" + _item.FENTRYID + ""); |
| | | //LogHelper.Info("总需求量:" + NeedQty + ""); |
| | | //LogHelper.Info("最小起订量:" + FMINPOQTY + ""); |
| | | if (NeedQty <= FMINPOQTY) |
| | | { |
| | | LogHelper.Info("[提料计划]当前物料明细无采购信息:" + item.FMATERIALID + ",数量:" + NeedQty + ",最小起订量:" + FMINPOQTY + ""); |
| | |
| | | //{ |
| | | foreach (var Purchase in _PurchaseInventory) |
| | | { |
| | | LogHelper.Info("物料:" + Purchase.FMATERIALID + ",采购订单数量:" + Purchase.FQTY); |
| | | LogHelper.Info("采购订单号测试:" + Purchase.FBillNo); |
| | | //LogHelper.Info("物料:" + Purchase.FMATERIALID + ",采购订单数量:" + Purchase.FQTY); |
| | | if (Purchase.FQTY >= NeedQty) |
| | | { |
| | | foreach (int id in FEntryIdList) |
| | |
| | | { |
| | | var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); |
| | | decimal Qty = DayPlanPpbomls.NeedQty;//订单数量 |
| | | if (Qty == 0) |
| | | LogHelper.Info("订单数量为0"); |
| | | //if (Qty == 0) |
| | | // LogHelper.Info("订单数量为0"); |
| | | if (Qty > _NeedQty) |
| | | Qty = _NeedQty; //订单数量>采购订单数量 取采购订单 |
| | | |
| | | if (_NeedQty == 0) |
| | | LogHelper.Info("订单数量为0"); |
| | | //if (_NeedQty == 0) |
| | | // LogHelper.Info("订单数量为0"); |
| | | |
| | | _NeedQty = _NeedQty - Qty; |
| | | PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp |
| | |
| | | string PurchseFNUMBER = item.PurchseFNUMBER; |
| | | JObject model = new JObject(); |
| | | model.Add("FHDate", date); |
| | | model.Add("FHRemark", "生产订单号:" + "测试呢呢"); |
| | | model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" }); |
| | | model.Add("FSupplierID", new JObject() { ["Fnumber"] = PurchseFNUMBER }); |
| | | |
| | | JArray Fentity = new JArray(); |
| | | List<PODemandPlanTemp> _PODemandPlanList = PODemandPlanTemp.Where(x => x.FHMASTERDATE == date && x.PurchseFNUMBER == PurchseFNUMBER).ToList(); |
| | | int FSEQ = 1; |
| | | foreach (var _item in _PODemandPlanList) |
| | | { |
| | | JObject FentityModel = new JObject(); |
| | |
| | | FentityModel.Add("FHPOOrderEntryID", _item.PurchseFentryID); //采购订单子内码:FHPOOrderEntryID |
| | | FentityModel.Add("FHPOOrderBillNo", _item.PurchseFBillNo); //采购订单号:FHPOOrderBillNo |
| | | FentityModel.Add("FERPCLSID", _item.FErpClsID); //发料方式 |
| | | //FentityModel.Add("FSEQ", FSEQ); //发料方式 |
| | | FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //发料方式 |
| | | |
| | | Fentity.Add(FentityModel); |
| | | FSEQ++; |
| | | } |
| | | model.Add("FEntity", Fentity); |
| | | FinalyResult.Add(model); |
| | |
| | | ["IsVerifyBaseDataField"] = "false", |
| | | ["Model"] = FinalyResult |
| | | }; |
| | | CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.BatchSave("paez_PODemandPlan", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |