src/BLL/Demo.BillView/PRD/ProCompleteAnalysisMateriel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/BLL/Demo.BillView/PRD/ProCompleteAnalysisMateriel.cs
@@ -1,8 +1,11 @@ using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using System; using System.Collections.Generic; @@ -18,26 +21,84 @@ [HotUpdate] public class ProCompleteAnalysisMateriel : AbstractDynamicFormPlugIn { bool did = false; public override void OnLoad(EventArgs e) { base.OnLoad(e); string FHMainICMOInterIDr = this.View.OpenParameter.GetCustomParameter("FHMainICMOInterIDr").ToString();//主生产订单主内码 //string FBillNo = this.View.OpenParameter.GetCustomParameter("FBillNo").ToString(); string sql = string.Format(@"/*dialect*/select a.*,b.FBILLNO FBILLNOs from JIT_MOMaterReadysBill a if (this.View.OpenParameter.GetCustomParameter("FHMainICMOInterIDr") == null) { SearchList(); } else { if (did) return; string FHMainICMOInterIDr = this.View.OpenParameter.GetCustomParameter("FHMainICMOInterIDr").ToString();//主生产订单主内码 //string FBillNo = this.View.OpenParameter.GetCustomParameter("FBillNo").ToString(); string sql = string.Format(@"/*dialect*/select a.*,b.FBILLNO FBILLNOs from JIT_MOMaterReadysBill a left join T_PRD_MO b on a.FHMainICMOInterIDr=b.FID where FHMainICMOInterIDr ='{0}' ", FHMainICMOInterIDr); DataTable dt = DBUtils.ExecuteDataSet(this.Context, sql).Tables[0]; DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { /* 计划发料数量 = 计划总数量 * 单位用料 齐套数量 = 齐套数 * 单位用料(考虑分层级* 父级) 缺料数量 = 1 - 2 是否齐套 = 缺料 < 0 ? */ decimal FPlanIssueCount = Convert.ToDecimal(dt.Rows[i]["FSumPlanCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//计划发料数量 decimal FCompleteCount = Convert.ToDecimal(dt.Rows[i]["FCompleteCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//齐套数量 decimal FLackCount = FPlanIssueCount - FCompleteCount;//缺料数量 this.Model.CreateNewEntryRow("FEntity"); this.Model.SetValue("FSEQ", i + 1, i);//序号 this.Model.SetValue("FMateralDetailId", dt.Rows[i]["FHMATERID"], i); this.Model.SetValue("FScOrderNoDetail", dt.Rows[i]["FBILLNOs"], i);//生产订单号 this.Model.SetValue("FOccupyCount", FCompleteCount, i);// this.Model.SetValue("FCurrentCount", dt.Rows[i]["FHStockQty"], i);//当前库存情况 } } did = true; } } /// <summary> /// 查询事件 /// </summary> public void SearchList() { string sqlwhere = " where 1=1"; string sql = string.Format(@"/*dialect*/select a.*,b.FBILLNO FBILLNOs from JIT_MOMaterReadysBill a left join T_PRD_MO b on a.FHMainICMOInterIDr=b.FID "); //生产订单号 string PRDBillNo = Convert.ToString(this.Model.GetValue("FScOrderNo")); if (!string.IsNullOrEmpty(PRDBillNo)) sqlwhere += $" and FPRDBillNo='{PRDBillNo}'"; sql += sqlwhere; DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; this.Model.DeleteEntryData("FEntity"); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { /* 计划发料数量 = 计划总数量 * 单位用料 齐套数量 = 齐套数 * 单位用料(考虑分层级* 父级) 缺料数量 = 1 - 2 是否齐套 = 缺料 < 0 ? */ 计划发料数量 = 计划总数量 * 单位用料 齐套数量 = 齐套数 * 单位用料(考虑分层级* 父级) 缺料数量 = 1 - 2 是否齐套 = 缺料 < 0 ? */ decimal FPlanIssueCount = Convert.ToDecimal(dt.Rows[i]["FSumPlanCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//计划发料数量 decimal FCompleteCount = Convert.ToDecimal(dt.Rows[i]["FCompleteCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//齐套数量 @@ -50,9 +111,19 @@ this.Model.SetValue("FCurrentCount", dt.Rows[i]["FHStockQty"], i);//当前库存情况 } } this.View.UpdateView(); did = true; } public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); if (e.BarItemKey.ToUpper() == "TBFILTER") { SearchList(); } } } } src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs
@@ -53,7 +53,7 @@ //} public override void AfterBarItemClick(AfterBarItemClickEventArgs e) { base.AfterBarItemClick(e); @@ -111,7 +111,7 @@ { //Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); //DynamicObjectCollection rows = this.Model.GetEntityDataObject(entity); this.Model.DeleteEntryData("FEntity"); for (int i = 0; i < dt.Rows.Count; i++) { @@ -138,30 +138,6 @@ { this.Model.SetValue("FT" + "" + j + "", dt.Rows[i][15 + j].ToString(), i); } //entity.SeqDynamicProperty.SetValue(row, i + 1);//序号 //row["FSalOrderNo"] = dt.Rows[i][0].ToString();//销售订单号 //row["FSCOrderNo"] = dt.Rows[i][1].ToString();//生产订单号 //row["FORGID"] = Convert.ToInt32(dt.Rows[i][2].ToString());//生产组织 //row["FProductWorkShopId"] = Convert.ToInt32(dt.Rows[i][3].ToString());//生产车间 //row["FResourcesId"] = Convert.ToInt32(dt.Rows[i][4].ToString());//生产资源 //row["FMatrailId"] = dt.Rows[i][5].ToString(); //产品代码 //row["FMatrailName"] = dt.Rows[i][6].ToString(); //产品名称 //row["FModel"] = dt.Rows[i][7].ToString(); //规格型号 //row["FUnit"] = dt.Rows[i][8].ToString(); //计量单位 //row["FBatch"] = dt.Rows[i][9].ToString(); //批次号 //row["FSalOrderCount"] = dt.Rows[i][10].ToString(); //销售订单数量 //row["FProOrderCount"] = dt.Rows[i][11].ToString(); //生产订单数量 //row["FCompleteSetCount"] = dt.Rows[i][12].ToString(); //总齐套数量 //row["FDeliveryDate"] = GetDateTime(Convert.ToInt32(dt.Rows[i][13].ToString())); //交货日期 //row["FOrderLevel"] = dt.Rows[i][14].ToString(); //订单等级 //for (int j = 0; j <= 60; j++) //{ // row["FT" + "" + j + ""] = dt.Rows[i][15 + j].ToString(); //} //this.View.GetControl("FSalOrderNo").Text = "入库单号"; //this.View.GetControl("FSCOrderNo").Text = "采购入库数量"; // rows.Add(row); } } @@ -175,7 +151,6 @@ } } this.View.GetMainBarItem("TBWJSC").Enabled = false; //锁定按钮 } @@ -208,6 +183,26 @@ //单据体信息转换为列表集合 DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); string _result = ""; foreach (DynamicObject current in entityDataObjoct) { //根据生产订单号和物料查询是否存在明细 sql = string.Format(@"/*dialect*/SELECT T1.FBILLNO,T2.* FROM T_PRD_MO T1 LEFT JOIN T_PRD_MOENTRY T2 ON T1.FID = T2.FID WHERE T1.FBILLNO = '{0}' AND T2.FMATERIALID = '{1}'", Convert.ToString(current["FSCOrderNo"]), Convert.ToString(current["FMatrailId_Id"])); DataTable dt = new DataTable(); dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; if (dt.Rows.Count == 0) _result += "序号:" + Convert.ToString(current["SEQ"]) + ",生产订单号:" + Convert.ToString(current["FSCOrderNo"]) + "对应的物料" + (current["FMatrailId"] as DynamicObject)["Number"] + "不存在"; } if (_result != "") { this.View.ShowErrMessage(_result); return; } foreach (DynamicObject current in entityDataObjoct) { if (string.IsNullOrEmpty(Convert.ToString(current["FSalOrderNo"])) || string.IsNullOrEmpty(Convert.ToString(current["FSCOrderNo"]))) @@ -216,9 +211,11 @@ //根据生产订单号和物料查询是否存在明细 sql = string.Format(@"/*dialect*/SELECT T1.FBILLNO,T2.* FROM T_PRD_MO T1 LEFT JOIN T_PRD_MOENTRY T2 ON T1.FID = T2.FID WHERE T1.FBILLNO = '{0}' ", Convert.ToString(current["FSCOrderNo"])); WHERE T1.FBILLNO = '{0}' AND T2.FMATERIALID = '{1}'", Convert.ToString(current["FSCOrderNo"]), Convert.ToString(current["FMatrailId_Id"])); DataTable dt = new DataTable(); dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; if (dt.Rows.Count == 0) continue; string FID = "";//FID 源单主内码 string FENTRYID = "";//FENTRYID 源单子内码 @@ -239,7 +236,7 @@ jsonRoot.Add("Creator", ""); jsonRoot.Add("NeedUpDateFields", new JArray()); jsonRoot.Add("NeedReturnFields", new JArray()); jsonRoot.Add("IsDeleteEntry", "true"); jsonRoot.Add("IsDeleteEntry", "false"); jsonRoot.Add("SubSystemId", ""); jsonRoot.Add("IsVerifyBaseDataField", ""); @@ -250,7 +247,7 @@ jsonModel.Add("FHOrderLev", current["FOrderLevel"].ToString());//订单等级 jsonModel.Add("FSalOrderCount", current["FOrderLevel"].ToString());//销售订单数量 jsonModel.Add("FHOrderCommitDate", current["FDeliveryDate"].ToString());//交货期HOrderCommitDate //jsonModel.Add("FBatch", current["FBatch"].ToString());//批次 //jsonModel.Add("FBatch", current["FBatch"].ToString());//批次 jsonModel.Add("FBatch", FLOT);//批次 jsonModel.Add("FHOrderNeedQty", FQTY);// 订单需求数量 jsonModel.Add("FPrdBillNo", FBILLNO); ;//源单编号 @@ -262,18 +259,26 @@ jsonFHMaterID.Add("FNumber", (current["FMatrailId"] as DynamicObject)["Number"].ToString()); jsonModel.Add("FHMaterID", jsonFHMaterID);//FHMaterID 物料 JObject jsonFHPRDORGID = new JObject(); jsonFHPRDORGID.Add("FNumber", (current["FORGID"] as DynamicObject)["Number"].ToString()); jsonModel.Add("FHPRDORGID", jsonFHPRDORGID);//FHMaterID 生产组织 if (Convert.ToString(current["FORGID_Id"]) != "0") { JObject jsonFHPRDORGID = new JObject(); jsonFHPRDORGID.Add("FNumber", (current["FORGID"] as DynamicObject)["Number"].ToString()); jsonModel.Add("FHPRDORGID", jsonFHPRDORGID);//FHMaterID 生产组织 //JObject jsonFProductWorkShopId = new JObject(); //jsonFProductWorkShopId.Add("FNumber", (current["FProductWorkShopId"] as DynamicObject)["Number"].ToString()); //jsonModel.Add("FHWorkShopID", jsonFProductWorkShopId);//FHMaterID 生产车间 } if (Convert.ToString(current["FProductWorkShopId_Id"]) != "0") { JObject jsonFProductWorkShopId = new JObject(); jsonFProductWorkShopId.Add("FNumber", (current["FProductWorkShopId"] as DynamicObject)["Number"].ToString()); jsonModel.Add("FHSourceID", jsonFProductWorkShopId);//FHSourceID 生产车间 } //JObject jsonFResourcesId = new JObject(); //jsonFHMaterID.Add("FNumber", (current["FResourcesId"] as DynamicObject)["Number"].ToString()); //jsonModel.Add("FHSourceID", jsonFResourcesId);//FHMaterID 生产资源 if (Convert.ToString(current["FResourcesId_Id"]) != "0") { JObject jsonFResourcesId = new JObject(); jsonFResourcesId.Add("FNumber", (current["FResourcesId"] as DynamicObject)["Number"].ToString()); jsonModel.Add("FHWorkShopID", jsonFResourcesId);//FHWorkShopID 生产资源 } JArray Entry = new JArray(); for (int i = 0; i <= 60; i++) { @@ -282,34 +287,73 @@ jsonFPOOrderEntry.Add("FHMasterDate", date.AddDays(i).ToShortDateString()); ;//主日期 jsonFPOOrderEntry.Add("FHQty ", Convert.ToString(current["FT" + "" + i + ""])); ;//日计划数量 jsonFPOOrderEntry.Add("FColumn", "FT" + "" + i + ""); ;//对应的列头 //jsonFPOOrderEntry.Add("FHMainSourceBillType ", "生产订单"); ;//源单类型 //jsonFPOOrderEntry.Add("FHMainSourceBillNo", FBILLNO); ;//源单编号 //jsonFPOOrderEntry.Add("FHMainSourceInterID", FID); ;//源单主内码 //jsonFPOOrderEntry.Add("FHMainSourceEntryID", FENTRYID); ;//源单子内码 //jsonFPOOrderEntry.Add("FHMainSourceBillType ", "生产订单"); ;//源单类型 //jsonFPOOrderEntry.Add("FHMainSourceBillNo", FBILLNO); ;//源单编号 //jsonFPOOrderEntry.Add("FHMainSourceInterID", FID); ;//源单主内码 //jsonFPOOrderEntry.Add("FHMainSourceEntryID", 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") //日计划工单不为空时update if (Convert.ToString(current["FDayPlanID"]) != "0") { this.View.ShowMessage("导入成功"); jsonModel.Add("FID", Convert.ToString(current["FDayPlanID"])); ;//源单编号 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") { string FDayPlanBillNo = saveObj["Result"]["ResponseStatus"]["SuccessEntitys"]["Number"].ToString(); string FDayPlanID = saveObj["Result"]["ResponseStatus"]["SuccessEntitys"]["Id"].ToString(); //this.Model.SetValue("FDayPlanBillNo", FDayPlanBillNo, Convert.ToString(current["SEQ"]));// // this.Model.SetValue("FDayPlanID", FDayPlanID, Convert.ToString(current["SEQ"]));// this.View.ShowMessage("导入成功"); } else { this.View.ShowErrMessage("导入失败"); } } else { this.View.ShowErrMessage("导入失败"); 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") { string FDayPlanBillNo = saveObj["Result"]["Number"].ToString(); string FDayPlanID = saveObj["Result"]["Id"].ToString(); //this.Model.SetValue("FDayPlanBillNo", FDayPlanBillNo, Convert.ToString(current["SEQ"]));// // this.Model.SetValue("FDayPlanID", FDayPlanID, Convert.ToString(current["SEQ"]));// this.View.ShowMessage("导入成功"); } else { this.View.ShowErrMessage("导入失败"); } } } } catch (Exception ex) src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -262,9 +262,21 @@ else sqlwhere += $" and FHSeOrderBillNo='{FSalOrder}'"; 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()) " + sqlwhere; //获取单据体信息 Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); //单据体信息转换为列表集合 DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); List<string> sqlList = new List<string>(); string sql; foreach (var item in entityDataObjoct) { int result = DBUtils.Execute(Context, sql); sql = $"/*dialect*/update Sc_WorkBillSortBillSub set FHLockedSub=1 where FEntryID in (select TOP({day}) FEntryID from Sc_WorkBillSortBillSub where FHLOCKEDSUB = 0 AND FID = { Convert.ToString(item["FDayPlanWorkID"])} AND DATEDIFF(DAY, GETDATE(), FHMASTERDATE) >= 0 ORDER BY FEntryID) "; sqlList.Add(sql); } int result = DBServiceHelper.ExecuteBatch(Context, sqlList); if (result > 0) { SearchList222(); @@ -272,7 +284,6 @@ } else this.View.ShowMessage("操作失败,联系管理员!"); } /// <summary> /// 保存功能 @@ -287,11 +298,17 @@ //单据体信息转换为列表集合 DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); DateTime date = DateTime.Now; foreach (DynamicObject current in entityDataObjoct) { DateTime FBzDate = Convert.ToDateTime(Convert.ToDateTime(current["FBzDate"])); DateTime end = Convert.ToDateTime(Convert.ToDateTime(current["FBzDate"]).AddDays(60).ToShortDateString());//最大日期 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); @@ -571,6 +588,16 @@ else sqlwhere += $" and FHSeOrderBillNo='{FSalOrder}'"; //生产订单号 string FScOrderMainNo = Convert.ToString((this.Model.GetValue("FScOrderMainNo"))); if (string.IsNullOrEmpty(FScOrderMainNo)) { } else sqlwhere += $" and FSCORDERNO='{FScOrderMainNo}'"; //物料 if ((this.Model.GetValue("FMatralId") as DynamicObject) != null) { @@ -612,6 +639,10 @@ this.Model.SetValue("FHMainSourceInterID", dt.Rows[i]["FPRDMOMAINID"].ToString(), i);//源单主内码FHMainSourceInterID this.Model.SetValue("FHMainSourceEntryID", dt.Rows[i]["FPRDMOENTYID"].ToString(), i);//源单子内码FHMainSourceEntryID this.Model.SetValue("FDayPlanWorkID", dt.Rows[i]["FID"].ToString(), i);//日计划工单FID this.Model.SetValue("FProductWorkShopId", dt.Rows[i]["FHSourceID"].ToString(), i);//生产车间 this.Model.SetValue("FResourcesId", dt.Rows[i]["FHWorkShopID"].ToString(), i);//生产资源 sql = @"/*dialect*/SELECT * FROM Sc_WorkBillSortBillSub WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and FID=" + dt.Rows[i]["FID"].ToString(); DataTable _dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; @@ -870,6 +901,41 @@ DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); List<DayPlanPpbom> DayPlanPpbom = ds.ToModelList<DayPlanPpbom>(); sql = @"select T1.FID,FPLANCOUNT,FCOMPLETECOUNT,t2.FHQTY from SC_WORKBILLSORTBILLMAIN T1 JOIN SC_WORKBILLSORTBILLSUB T2 ON T1.FID=T2.FID WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE) >=0 AND FPLANCOUNT>FCOMPLETECOUNT AND T1.FID in (" + FDayPlanWorkID + ")"; DataSet Complete = DBServiceHelper.ExecuteDataSet(Context, sql); List<DayPlanPpbom> CompleteList = ds.ToModelList<DayPlanPpbom>(); //FID集合 var FIDList = CompleteList.Select(x => x.FID).Distinct().ToList(); foreach (var item in FIDList) { var _CompleteList = CompleteList.Where(p => p.FID == item).ToList(); decimal FComplete = _CompleteList.FirstOrDefault().FCOMPLETECOUNT; if (FComplete == 0) continue; foreach (var _item in _CompleteList) { FComplete = FComplete - _item.FHQTY; if (FComplete >= 0) { DayPlanPpbom.RemoveAll(p => p.FENTRYID == _item.FENTRYID); } else { DayPlanPpbom.FindAll(p => p.FENTRYID == _item.FENTRYID).ForEach(x => { x.NeedQty = -(x.FNeedQty * FComplete); }); break; } } } //物料集合 由物料去分组 List<string> MaterialIDList = DayPlanPpbom.Select(x => x.FMATERIALID).Distinct().ToList(); //提料计划数据集临时存储集合 @@ -1023,6 +1089,7 @@ { if (Purchase.FQTY >= NeedQty) { List<int> mmm = new List<int>(); foreach (int id in FEntryIdList) { @@ -1117,7 +1184,7 @@ { FEntryIdList.Remove(mm); } } } NeedQty = 0;