New file |
| | |
| | | [*.cs] |
| | | |
| | | # IDE0055: 修正格式 |
| | | dotnet_diagnostic.IDE0055.severity = none |
| | |
| | | EndProject |
| | | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.TimedTaskPlugIn", "src\BLL\Demo.TimedTaskPlugIn\Demo.TimedTaskPlugIn.csproj", "{3B5437EE-F19C-4B69-90A4-88866841337B}" |
| | | EndProject |
| | | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{20A267C5-DE2B-4929-B29B-E3A16670E30E}" |
| | | ProjectSection(SolutionItems) = preProject |
| | | .editorconfig = .editorconfig |
| | | EndProjectSection |
| | | EndProject |
| | | Global |
| | | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
| | | Debug|Any CPU = Debug|Any CPU |
| | |
| | | public override void OnLoad(EventArgs e) |
| | | { |
| | | base.OnLoad(e); |
| | | |
| | | if (this.View.OpenParameter.GetCustomParameter("FHMainICMOInterID") == null) |
| | | { |
| | | SearchList(); |
| | |
| | | { |
| | | if (did) |
| | | return; |
| | | |
| | | string FHMainICMOInterIDr = this.View.OpenParameter.GetCustomParameter("FHMainICMOInterID").ToString();//主生产订单主内码 |
| | | string FHMainICMOEntryID = this.View.OpenParameter.GetCustomParameter("FHMainICMOEntryID").ToString();// 主生产订单子内码 |
| | | string FHICMOInterID = this.View.OpenParameter.GetCustomParameter("FHICMOInterID").ToString();//日计划订单主内码 |
| | | //string FMatrailId_Id = this.View.OpenParameter.GetCustomParameter("FMatrailId_Id").ToString(); |
| | | |
| | | //string FBillNo = this.View.OpenParameter.GetCustomParameter("FBillNo").ToString(); |
| | | string sql = string.Format(@"/*dialect*/select * from JIT_MOMaterReadysBill where FHMainICMOInterIDr ='{0}' and FHMainICMOEntryID ='{1}' and FHICMOInterID='{2}' and FIDENTIFICAT=1 ", FHMainICMOInterIDr, FHMainICMOEntryID, FHICMOInterID); |
| | | string sql = string.Format(@"/*dialect*/select * from JIT_MOMaterReadysBill where FHMainICMOInterIDr ='{0}' and FHMainICMOEntryID ='{1}' and FHICMOInterID='{2}' ", FHMainICMOInterIDr, FHMainICMOEntryID, FHICMOInterID); |
| | | 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("FPlanIssueCount", FPlanIssueCount, i);//计划发料数量 |
| | | this.Model.SetValue("FCompleteCount", FCompleteCount, i);//齐套数量 |
| | | this.Model.SetValue("FLackCount", FLackCount, i);//缺料数量 |
| | | this.Model.SetValue("FPlanIssueCount", dt.Rows[i]["FSumPlanCount"], i);//计划发料数量 |
| | | this.Model.SetValue("FCompleteCount", dt.Rows[i]["FCompleteCount"], i);//齐套数量 |
| | | this.Model.SetValue("FLackCount", dt.Rows[i]["FLackCount"], i);//缺料数量 |
| | | this.Model.SetValue("FPassableCount", dt.Rows[i]["FHLeftQty"].ToString(), i);//可用数量 |
| | | this.Model.SetValue("FMateralCount", dt.Rows[i]["FHLeftQty"].ToString(), i);//物料数量 |
| | | this.Model.SetValue("FCompleteDetailStatus", FLackCount > 0 ? "未齐套" : "齐套", i);//是否齐套 |
| | | this.Model.SetValue("FCompleteDetailStatus", dt.Rows[i]["FComPlete"].ToString(), i);//是否齐套 |
| | | this.Model.SetValue("FHMainICMOInterIDr", dt.Rows[i]["FHMainICMOInterIDr"].ToString(), i);//生产订单内码 |
| | | this.Model.SetValue("FPRDBillNo", dt.Rows[i]["FPRDBillNo"].ToString(), i);//生产订单内码 |
| | | this.Model.SetValue("FPlanDate", dt.Rows[i]["FPlanDate"].ToString(), i);//日计划日期 |
| | | } |
| | | } |
| | | |
| | | did = true; |
| | | } |
| | | } |
| | | |
| | | |
| | | public override void BarItemClick(BarItemClickEventArgs e) |
| | | { |
| | | base.BarItemClick(e); |
| | |
| | | base.EntityRowClick(e); |
| | | DynamicFormShowParameter formPa = new DynamicFormShowParameter(); |
| | | formPa.FormId = "paez_CompleteAnalysisMateriel"; |
| | | |
| | | /* jsonModel.Add("FHMainICMOInterID", FMainInterID);//主生产订单主内码 |
| | | jsonModel.Add("FHMainICMOEntryID", FMainEntryID);//主生产订单子内码 |
| | | jsonModel.Add("FHICMOInterID", FDayPlanWorkID);//日计划订单主内码 |
| | | current["FMatrailId_Id"].ToString(), current["FHMainSourceInterID"].ToString(), current["FHMainSourceEntryID"].ToString(), current["FDayPlanWorkID"].ToString()) |
| | | |
| | | */ |
| | | |
| | | formPa.CustomParams.Add("FHMainICMOInterIDr", Convert.ToString(this.View.Model.GetValue("FHMainICMOInterIDr", e.Row).ToString())); |
| | | formPa.CustomParams.Add("FMatrailId", Convert.ToString((this.View.Model.GetValue("FMateralDetailId", e.Row) as DynamicObject)["Id"].ToString())); |
| | | this.View.ShowForm(formPa); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询事件 |
| | | /// </summary> |
| | |
| | | select FSumPlanCount*FUNITDOSAGE as FPlanIssueCountS,FCompleteCount*FUNITDOSAGE FCompleteCountS,(FSumPlanCount-FCompleteCount)*FUNITDOSAGE FLackCountS,case when FSumPlanCount>FCompleteCount then '未齐套' else '齐套' end CompleteStatus, |
| | | t2.FBillNo PRDBillNo, |
| | | t1.* from JIT_MOMaterReadysBill T1 |
| | | JOIN T_PRD_MO t2 on t1.FHMainICMOInterIDr=t2.FID where FIDENTIFICAT=1 |
| | | JOIN T_PRD_MO t2 on t1.FHMainICMOInterIDr=t2.FID |
| | | )AS T |
| | | "; |
| | | |
| | | sql = string.Format(@"/*dialect*/select * from JIT_MOMaterReadysBill"); |
| | | //物料 |
| | | if ((this.Model.GetValue("FMateralId") as DynamicObject) != null) |
| | | { |
| | |
| | | this.Model.CreateNewEntryRow("FEntity"); |
| | | this.Model.SetValue("FSEQ", i + 1, i);//序号 |
| | | this.Model.SetValue("FMateralDetailId", dt.Rows[i]["FHMATERID"], i); |
| | | this.Model.SetValue("FPlanIssueCount", dt.Rows[i]["FPlanIssueCountS"], i);//计划发料数量 |
| | | this.Model.SetValue("FCompleteCount", dt.Rows[i]["FCompleteCountS"], i);//齐套数量 |
| | | this.Model.SetValue("FLackCount", dt.Rows[i]["FLackCountS"], i);//缺料数量 |
| | | this.Model.SetValue("FPlanIssueCount", dt.Rows[i]["FSumPlanCount"], i);//计划发料数量 |
| | | this.Model.SetValue("FCompleteCount", dt.Rows[i]["FCompleteCount"], i);//齐套数量 |
| | | this.Model.SetValue("FLackCount", dt.Rows[i]["FLackCount"], i);//缺料数量 |
| | | this.Model.SetValue("FPassableCount", dt.Rows[i]["FHLeftQty"].ToString(), i);//可用数量 |
| | | this.Model.SetValue("FMateralCount", dt.Rows[i]["FHLeftQty"].ToString(), i);//物料数量 |
| | | this.Model.SetValue("FCompleteDetailStatus", dt.Rows[i]["CompleteStatus"].ToString(), i);//是否齐套 |
| | | this.Model.SetValue("FCompleteDetailStatus", dt.Rows[i]["FComPlete"].ToString(), i);//是否齐套 |
| | | this.Model.SetValue("FHMainICMOInterIDr", dt.Rows[i]["FHMainICMOInterIDr"].ToString(), i);//生产订单内码 |
| | | this.Model.SetValue("FPRDBillNo", dt.Rows[i]["FPRDBillNo"].ToString(), i);//生产订单内码 |
| | | this.Model.SetValue("FPlanDate", dt.Rows[i]["FPlanDate"].ToString(), i);//日计划日期 |
| | | } |
| | | } |
| | | this.View.UpdateView(); |
| | | |
| | | did = true; |
| | | } |
| | | } |
| | |
| | | { |
| | | bool did = false; |
| | | string FMatrailId = ""; |
| | | |
| | | public override void OnLoad(EventArgs e) |
| | | { |
| | | base.OnLoad(e); |
| | | |
| | | if (this.View.OpenParameter.GetCustomParameter("FHMainICMOInterIDr") == null) |
| | | { |
| | | SearchList(); |
| | |
| | | return; |
| | | string FHMainICMOInterIDr = this.View.OpenParameter.GetCustomParameter("FHMainICMOInterIDr").ToString();//主生产订单主内码 |
| | | FMatrailId = this.View.OpenParameter.GetCustomParameter("FMatrailId").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}' and FIDENTIFICAT=2 and FHMATERID ='{1}'", FHMainICMOInterIDr, FMatrailId); |
| | | 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 FIDENTIFICAT=2 and FHMATERID ='{0}'", FMatrailId); |
| | | where FHMATERID ='{0}'", FMatrailId); |
| | | 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", dt.Rows[i]["FHUseQty"], i);// |
| | | this.Model.SetValue("FScOrderNoDetail", dt.Rows[i]["FBILLNOs"], i);//生产订单号 |
| | | this.Model.SetValue("FOccupyCount", dt.Rows[i]["FCompleteCount"], i);// |
| | | this.Model.SetValue("FCurrentCount", dt.Rows[i]["FHStockQty"], i);//当前库存情况 |
| | | |
| | | this.Model.SetValue("FOrgId", dt.Rows[i]["FHStockOrgID"], i);//库存组织 |
| | | this.Model.SetValue("FOwnerTypeId", dt.Rows[i]["FOwnerTypeId"], i);//货主类型 |
| | | this.Model.SetValue("FOwnerId", dt.Rows[i]["FOwnerId"], i);//货主 |
| | | this.Model.SetValue("FPlanDate", dt.Rows[i]["FPlanDate"].ToString(), i);//日计划日期 |
| | | } |
| | | } |
| | | |
| | | did = true; |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public void SearchList() |
| | | { |
| | | string sqlwhere = " and 1=1"; |
| | | 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 where FIDENTIFICAT=2 |
| | | 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}'"; |
| | | |
| | | if (FMatrailId != "") |
| | | sqlwhere += $" and FHMATERID='{FMatrailId}'"; |
| | | |
| | | sql += sqlwhere; |
| | | DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; |
| | | this.Model.DeleteEntryData("FEntity"); |
| | |
| | | { |
| | | 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", dt.Rows[i]["FHUseQty"], i);// |
| | | |
| | | this.Model.SetValue("FOccupyCount", dt.Rows[i]["FCompleteCount"], i);// |
| | | this.Model.SetValue("FCurrentCount", dt.Rows[i]["FHStockQty"], i);//当前库存情况 |
| | | this.Model.SetValue("FOrgId", dt.Rows[i]["FHStockOrgID"], i);//库存组织 |
| | | this.Model.SetValue("FOwnerTypeId", dt.Rows[i]["FOwnerTypeId"], i);//库存组织 |
| | | |
| | | this.Model.SetValue("FOrgId", dt.Rows[i]["FHStockOrgID"], i);//库存组织 |
| | | this.Model.SetValue("FOwnerTypeId", dt.Rows[i]["FOwnerTypeId"], i);//货主类型 |
| | | this.Model.SetValue("FOwnerId", dt.Rows[i]["FOwnerId"], i);//货主 |
| | | |
| | | this.Model.SetValue("FPlanDate", dt.Rows[i]["FPlanDate"].ToString(), i);//日计划日期 |
| | | } |
| | | } |
| | | this.View.UpdateView(); |
| | | |
| | | did = true; |
| | | } |
| | | |
| | | |
| | | public override void BarItemClick(BarItemClickEventArgs e) |
| | | { |
| | | base.BarItemClick(e); |
| | |
| | | this.Model.SetItemValueByNumber("FResourcesId", dt.Rows[i][4].ToString(), i); |
| | | // this.Model.SetValue("FMatrailId", dt.Rows[i][5].ToString(), i); |
| | | this.Model.SetItemValueByNumber("FMatrailId", dt.Rows[i][5].ToString(), i); |
| | | this.Model.SetValue("FMatrailName", dt.Rows[i][6].ToString(), i); |
| | | this.Model.SetValue("FModel", dt.Rows[i][7].ToString(), i); |
| | | this.Model.SetValue("FUnit", dt.Rows[i][8].ToString(), i); |
| | | // this.Model.SetValue("FMatrailName", dt.Rows[i][6].ToString(), i); |
| | | // this.Model.SetValue("FModel", dt.Rows[i][7].ToString(), i); |
| | | // this.Model.SetValue("FUnit", dt.Rows[i][8].ToString(), i); |
| | | this.Model.SetValue("FBatch", dt.Rows[i][9].ToString(), i); |
| | | this.Model.SetValue("FSalOrderCount", dt.Rows[i][10].ToString(), i); |
| | | this.Model.SetValue("FCompleteSetCount", dt.Rows[i][12].ToString(), i); |
| | |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | using System.Diagnostics; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Runtime.CompilerServices; |
| | |
| | | |
| | | if (e.BarItemKey.ToUpper() == "TBCOMPLETE") |
| | | { |
| | | COMPLETEMAIN(); |
| | | CompleteSetAnalysis(); |
| | | //COMPLETEMAIN(); |
| | | // COMPLETE(); |
| | | } |
| | | //提料计划 |
| | |
| | | /// <summary> |
| | | /// 行双击 跳出齐套分析明细列表 |
| | | /// </summary> |
| | | /// <param name="e"></param> |
| | | /// <param name="e"></param> |
| | | public override void EntityRowDoubleClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e) |
| | | { |
| | | var m = e.Row; |
| | |
| | | else |
| | | { |
| | | grid.SetForecolor("FT" + "" + i + "", "#FF0000", m); |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | /// <param name="FMainInterID"> 生产订单主码</param> |
| | | /// <param name="FMainEntryID"> 生产订单子码</param> |
| | | /// <param name="FDayPlanWorkID"> 日计划工单FID</param> |
| | | /// <param name="FDayPlanWorkID"> 计划总数量</param> |
| | | /// <param name="SumPlan"> 计划总数量</param> |
| | | /// <param name="FStockOrgId"> 库存组织</param> |
| | | /// <returns></returns> |
| | | public string SumGetComplete(string FMATERIALID, string FMainInterID, string FMainEntryID, string FDayPlanWorkID, decimal SumPlan, string FStockOrgId) |
| | |
| | | |
| | | |
| | | |
| | | ///齐套分析 |
| | | |
| | | public void CompleteSetAnalysis() |
| | | { |
| | | Stopwatch sw = new Stopwatch(); |
| | | sw.Start();//开始计时 |
| | | //获取当前即时库存 按照物料+库存组织+货主+库存数量 |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, @" |
| | | /*dialect*/ |
| | | select isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0) FBASEQTY,T1.FStockOrgId,T1.FMATERIALID,a.FOWNERID,c.FNUMBER from |
| | | ( |
| | | select a.FHPRDORGID FStockOrgId,T2.FMATERIALID from SC_WORKBILLSORTBILLMAIN a |
| | | join SC_WORKBILLSORTBILLSub b on a.FID = b.FID |
| | | join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID |
| | | LEFT JOIN(select FID,FMATERIALID from T_PRD_PPBOMENTRY |
| | | group by FMATERIALID,FID) T2 on T1.FID = t2.FID |
| | | group by a.FHPRDORGID,T2.FMATERIALID |
| | | ) 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 and a.FOwnerId = b.FOwnerId |
| | | LEFT join T_ORG_Organizations c on a.FOWNERID = c.FORGID |
| | | where isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0)>0 |
| | | "); |
| | | ListInventory = ds.ToModelList<PRD_Inventory>(); |
| | | |
| | | //总库存 物料+库存组织+库存数量 |
| | | ds = DBServiceHelper.ExecuteDataSet(Context, @" |
| | | /*dialect*/ |
| | | select sum(isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0))FBASEQTY,T1.FStockOrgId,T1.FMATERIALID from |
| | | ( |
| | | select a.FHPRDORGID FStockOrgId,T2.FMATERIALID from SC_WORKBILLSORTBILLMAIN a |
| | | join SC_WORKBILLSORTBILLSub b on a.FID = b.FID |
| | | join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID |
| | | LEFT JOIN(select FID,FMATERIALID from T_PRD_PPBOMENTRY |
| | | group by FMATERIALID,FID) T2 on T1.FID = t2.FID |
| | | group by a.FHPRDORGID,T2.FMATERIALID |
| | | ) 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 |
| | | group by T1.FStockOrgId,T1.FMATERIALID |
| | | |
| | | "); |
| | | ListInventoryByStockOrgId = ds.ToModelList<PRD_Inventory>(); |
| | | |
| | | |
| | | //需要齐套分析的数据 |
| | | string sql = @" |
| | | /*dialect*/ |
| | | select a.FPRDMOMAINID,a.FPRDMOENTYID,a.FID,b.FEntryID,a.FHPRDORGID FStockOrgId,t5.FNUMBER as OrgFnumber,a.FHOrderLev,b.FHQTY,b.FHMASTERDATE,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty, |
| | | T2.FMATERIALID FMATERIALID2, T4.FNumber,T2.FNeedQty,FNeedQty/FQty dwyl,FHQTY*(FNeedQty/FQty) PlanCount from SC_WORKBILLSORTBILLMAIN a |
| | | join SC_WORKBILLSORTBILLSub b on a.FID = b.FID |
| | | join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID |
| | | LEFT JOIN(select FID, MAX(FENTRYID) FENTRYID, SUM(FNeedQty) FNeedQty, FMATERIALID from T_PRD_PPBOMENTRY |
| | | group by FMATERIALID, FID ) T2 on T1.FID = t2.FID |
| | | --LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID |
| | | JOIN T_BD_MATERIAL T4 on T2.FMATERIALID = T4.FMATERIALID |
| | | JOIN T_ORG_Organizations t5 on a.FHPRDORGID = t5.FORGID |
| | | --where FPRDMOMAINID = 100010 |
| | | ORDER BY b.FHMASTERDATE,a.FHOrderLev "; |
| | | ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | List<PRD_PPBOM> BomList = ds.ToModelList<PRD_PPBOM>(); |
| | | |
| | | //日计划+生产订单子表编码ID |
| | | var DatePlanList = BomList.GroupBy(p => new { p.FHMASTERDATE, p.FPRDMOENTYID }).Select(x => new PRD_PPBOM { FHMASTERDATE = x.Key.FHMASTERDATE, FPRDMOENTYID = x.Key.FPRDMOENTYID }).ToList(); |
| | | |
| | | //CompleteAnalysisTempModel 用于存储临时需要插入数据 |
| | | List<CompleteAnalysisTempModel> completeAnalysisTempModel = new List<CompleteAnalysisTempModel>(); |
| | | foreach (var item in DatePlanList) |
| | | { |
| | | //筛选出当日计划数据 |
| | | var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList(); |
| | | foreach (var _item in _BomList) |
| | | { |
| | | //该日计划物料需要数 |
| | | decimal need = _item.PlanCount; |
| | | //实际总库存 |
| | | decimal sjkc = 0; |
| | | var sjkcList = ListInventoryByStockOrgId.Where(x => x.FMATERIALID == _item.FMATERIALID2 && x.FStockOrgId == _item.FStockOrgId).FirstOrDefault(); |
| | | sjkc = sjkcList.FBASEQTY; |
| | | //真正需要取计算的数量(拆分货主) |
| | | //货主匹配 |
| | | List<PRD_Inventory> _ListInventory = ListInventory.Where(c => c.FMATERIALID == _item.FMATERIALID2 && c.FStockOrgId == _item.FStockOrgId && c.FBASEQTY > 0).ToList(); |
| | | if (_ListInventory.Count > 0) |
| | | { |
| | | foreach (var Inventory in _ListInventory) |
| | | { |
| | | if (need == 0) |
| | | break; |
| | | decimal fCompleteCount = need >= Inventory.FBASEQTY ? Inventory.FBASEQTY : need;//齐套数量 |
| | | decimal fLackCount = _item.PlanCount - fCompleteCount;//缺料数量 |
| | | completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel |
| | | { |
| | | FHMainICMOInterIDr = _item.FPRDMOMAINID, |
| | | FHMainICMOEntryID = _item.FPRDMOENTYID, |
| | | FHICMOInterID = _item.FID.ToString(), |
| | | FHICMOEntryID = _item.FEntryID.ToString(), |
| | | FHMaterID = _item.FNumber, |
| | | FHStockOrgID = _item.OrgFnumber, |
| | | FHPRDORGID = _item.OrgFnumber, |
| | | FPRDBillNo = _item.FMOBillNO, |
| | | FOwnerTypeId = "BD_OwnerOrg", |
| | | FOwnerId = Inventory.Fnumber, |
| | | FUnitDosage = _item.dwyl.ToString(),//单位用量 |
| | | FSumPlanCount = _item.PlanCount.ToString(),//计划总数量 |
| | | FCompleteCount = fCompleteCount, //齐套数量 |
| | | FLackCount = fLackCount,//缺料数量 |
| | | FHStockQty = sjkcList.FBASEQTY,//即时库存 |
| | | FHLeftQty = sjkcList.FBASEQTY,//可用数量 |
| | | FComPlete = fLackCount > 0 ? "未齐套" : "齐套", |
| | | FPlanDate = item.FHMASTERDATE // 日计划日期 |
| | | }); |
| | | |
| | | //扣减总库存数量 |
| | | sjkcList.FBASEQTY = sjkc - fCompleteCount > 0 ? sjkc - fCompleteCount : 0; |
| | | need = need >= Inventory.FBASEQTY ? need - Inventory.FBASEQTY : 0; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel |
| | | { |
| | | FHMainICMOInterIDr = _item.FPRDMOMAINID, |
| | | FHMainICMOEntryID = _item.FPRDMOENTYID, |
| | | FHICMOInterID = _item.FID.ToString(), |
| | | FHICMOEntryID = _item.FEntryID.ToString(), |
| | | FHMaterID = _item.FNumber, |
| | | FHStockOrgID = _item.OrgFnumber, |
| | | FHPRDORGID = _item.OrgFnumber, |
| | | FPRDBillNo = _item.FMOBillNO, |
| | | FOwnerTypeId = "BD_OwnerOrg", |
| | | FUnitDosage = _item.dwyl.ToString(),//单位用量 |
| | | FSumPlanCount = _item.PlanCount.ToString(),//计划总数量 |
| | | FCompleteCount = 0, //齐套数量 |
| | | FLackCount = _item.PlanCount,//缺料数量 |
| | | FHStockQty = 0,//即时库存 |
| | | FHLeftQty = 0,//可用数量 |
| | | FComPlete = "未齐套", |
| | | FPlanDate = item.FHMASTERDATE // 日计划日期 |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | foreach (var item in completeAnalysisTempModel) |
| | | { |
| | | |
| | | JObject jsonRoot = new JObject(); |
| | | jsonRoot.Add("Creator", ""); |
| | | jsonRoot.Add("NeedUpDateFields", new JArray()); |
| | | jsonRoot.Add("NeedReturnFields", new JArray()); |
| | | jsonRoot.Add("IsDeleteEntry", "true"); |
| | | jsonRoot.Add("SubSystemId", ""); |
| | | jsonRoot.Add("IsVerifyBaseDataField", ""); |
| | | |
| | | JObject jsonModel = new JObject(); |
| | | jsonModel.Add("FHMainICMOInterIDr", item.FHMainICMOInterIDr); |
| | | jsonModel.Add("FHMainICMOEntryID", item.FHMainICMOEntryID); |
| | | jsonModel.Add("FHICMOInterID", item.FHICMOInterID); |
| | | jsonModel.Add("FHICMOEntryID", item.FHICMOEntryID); |
| | | jsonModel.Add("FHMaterID", new JObject() { ["FNUMBER"] = item.FHMaterID }); |
| | | jsonModel.Add("FHUseQty", item.FHUseQty); |
| | | jsonModel.Add("FHStockOrgID", new JObject() { ["FNUMBER"] = item.FHStockOrgID }); |
| | | jsonModel.Add("FHStockQty", item.FHStockQty); |
| | | jsonModel.Add("FHLeftQty", item.FHLeftQty); |
| | | jsonModel.Add("FHPRDORGID", new JObject() { ["FNUMBER"] = item.FHStockOrgID }); |
| | | jsonModel.Add("FUnitDosage", item.FUnitDosage); |
| | | jsonModel.Add("FSumPlanCount", item.FSumPlanCount); |
| | | jsonModel.Add("FCompleteCount", item.FCompleteCount); |
| | | jsonModel.Add("FPRDBillNo", item.FPRDBillNo); |
| | | jsonModel.Add("FOwnerTypeId", item.FOwnerTypeId); |
| | | jsonModel.Add("FComPlete", item.FComPlete); |
| | | jsonModel.Add("FPlanDate", item.FPlanDate); |
| | | if (item.FOwnerId != null) |
| | | jsonModel.Add("FOwnerId", new JObject() { ["FNUMBER"] = item.FOwnerId }); |
| | | |
| | | |
| | | jsonRoot.Add("Model", jsonModel); |
| | | |
| | | 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(); |
| | | |
| | | if (saveIsSuc != "TRUE") |
| | | { |
| | | LogHelper.Error(jsonRoot.ToString()); |
| | | } |
| | | } |
| | | //执行完成后 更新日计划工单状态 |
| | | DBServiceHelper.Execute(Context, @" |
| | | /*dialect*/update Sc_WorkBillSortBillSub set FComplete = '不齐套' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'未齐套') ='未齐套') |
| | | "); |
| | | sw.Stop();//结束计时 |
| | | LogHelper.Info("运行总时长:" + sw.Elapsed); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 查询 |
| | | /// </summary> |
| | |
| | | DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | DateTime DateNow = DateTime.Now;//获取当前日期 |
| | | this.Model.DeleteEntryData("FEntity"); |
| | | EntryGrid grid = this.View.GetControl<EntryGrid>("FEntity"); |
| | | for (int i = 0; i < dt.Rows.Count; i++) |
| | | { |
| | | this.Model.CreateNewEntryRow("FEntity"); |
| | |
| | | |
| | | 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]; |
| | | |
| | | foreach (DataRow dr in _dt.Rows) |
| | | { |
| | | /* |
| | |
| | | this.Model.SetValue("FT" + getDay.Days.ToString(), dr["FHQTY"].ToString(), i);//日计划工单FID |
| | | if (dr["FHLockedSub"].ToString() == "1") |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), i).Enabled = false; //单据体行锁定字段 |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | if (dr["FHLockedSub"].ToString() == "1") |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), j).Enabled = false; //单据体行锁定字段 |
| | | if (dr["FCOMPLETE"].ToString() == "未齐套") |
| | | { |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), j).Enabled = false; //单据体行锁定字段 |
| | | grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#FF0000", j); |
| | | } |
| | | else |
| | | { |
| | | this.View.GetFieldEditor("FT" + getDay.Days.ToString(), j).Enabled = false; //单据体行锁定字段 |
| | | grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#00FF00", j); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | <Compile Include="Entity\SCM\SAL_SaleOrder.cs" /> |
| | | <Compile Include="Infrastructure\IBillHead.cs" /> |
| | | <Compile Include="Infrastructure\IBillEntry.cs" /> |
| | | <Compile Include="Model\CompleteAnalysisTempModel.cs" /> |
| | | <Compile Include="Model\PODemandPlan\DayPlanPpbom.cs" /> |
| | | <Compile Include="Model\PODemandPlan\PODemandPlanTemp.cs" /> |
| | | <Compile Include="Model\PODemandPlan\PurchaseInventory.cs" /> |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace Demo.Model.Model |
| | | { |
| | | public class CompleteAnalysisTempModel |
| | | { |
| | | // "FHMainICMOInterIDr": 1, |
| | | //"FHMainICMOEntryID": 1, |
| | | //"FHICMOInterID": 1, |
| | | //"FHICMOEntryID": 1, |
| | | //"FHMaterID": { |
| | | // "FNUMBER": "CCCCC" |
| | | //}, |
| | | //"FHUseQty": 100.0, |
| | | //"FHStockOrgID": { |
| | | // "FNumber": "100" |
| | | //}, |
| | | //"FHStockQty": 200.0, |
| | | //"FHLeftQty": 200.0, |
| | | //"FHPRDORGID": { |
| | | // "FNumber": "100" |
| | | //}, |
| | | //"FUnitDosage": 20.0, |
| | | //"FSumPlanCount": 500.0, |
| | | //"FCompleteCount": 500, |
| | | //"FPRDBillNo": "1008611", |
| | | //"FOwnerTypeId": "BD_OwnerOrg", |
| | | //"FIdentificat": "2" |
| | | /// <summary> |
| | | /// 主生产订单主内码:FHMainICMOInterIDr |
| | | /// </summary> |
| | | public string FHMainICMOInterIDr { get; set; } |
| | | /// <summary> |
| | | /// 主生产订单子内码:FHMainICMOEntryID |
| | | /// </summary> |
| | | public string FHMainICMOEntryID { get; set; } |
| | | /// <summary> |
| | | /// 日计划订单主内码:FHICMOInterID |
| | | /// </summary> |
| | | public string FHICMOInterID { get; set; } |
| | | /// <summary> |
| | | /// 日计划订单子内码:FHICMOEntryID |
| | | /// </summary> |
| | | public string FHICMOEntryID { get; set; } |
| | | /// <summary> |
| | | /// 子件物料:FHMaterID |
| | | /// </summary> |
| | | public string FHMaterID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 库存组织:FHStockOrgID |
| | | /// </summary> |
| | | public string FHStockOrgID { get; set; } |
| | | |
| | | /// <summary> |
| | | ///生产组织:FHPRDORGID |
| | | /// </summary> |
| | | public string FHPRDORGID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 生产订单号:FPRDBillNo |
| | | /// </summary> |
| | | public string FPRDBillNo { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 标识 |
| | | /// </summary> |
| | | public string FIdentificat { get; set; } |
| | | /// <summary> |
| | | /// 货主名称:FOwnerName |
| | | /// </summary> |
| | | public string FOwnerName { get; set; } |
| | | /// <summary> |
| | | /// 货主编码:FOwnerId |
| | | /// </summary> |
| | | public string FOwnerId { get; set; } |
| | | /// <summary> |
| | | /// 货主类型:FOwnerTypeId |
| | | /// </summary> |
| | | public string FOwnerTypeId { get; set; } |
| | | /// <summary> |
| | | /// 齐套状态 |
| | | /// </summary> |
| | | public string FComPlete { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 数量 |
| | | /// </summary> |
| | | public string FHUseQty { get; set; } |
| | | /// <summary> |
| | | /// 及时库存数量:FHStockQty |
| | | /// </summary> |
| | | public decimal FHStockQty { get; set; } |
| | | /// <summary> |
| | | ///可用数量:FHLeftQty |
| | | /// </summary> |
| | | public decimal FHLeftQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 缺料数量 |
| | | /// </summary> |
| | | public decimal FLackCount { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 单位用量:FUnitDosage |
| | | /// </summary> |
| | | public string FUnitDosage { get; set; } |
| | | /// <summary> |
| | | /// 计划总数量:FSumPlanCount |
| | | /// </summary> |
| | | public string FSumPlanCount { get; set; } |
| | | /// <summary> |
| | | /// 齐套数量:FCompleteCount q |
| | | /// </summary> |
| | | public decimal FCompleteCount { get; set; } |
| | | /// <summary> |
| | | /// 日计划日期 |
| | | /// </summary> |
| | | public DateTime FPlanDate { get; set; } |
| | | |
| | | } |
| | | } |
| | |
| | | /// 库存货主 |
| | | /// </summary> |
| | | public string FOwnerId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 货主编码 |
| | | /// </summary> |
| | | public string Fnumber { get; set; } |
| | | } |
| | | } |
| | |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 主键 |
| | | /// 日计划工单FID |
| | | /// </summary> |
| | | public long FID { get; set; } |
| | | /// <summary> |
| | | /// 日计划明细FEntryID |
| | | /// </summary> |
| | | public long FEntryID { get; set; } |
| | | /// <summary> |
| | | /// 生产用料清单单号 |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public decimal FBASEQTY { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 生产订单主码 |
| | | /// </summary> |
| | | public string FPRDMOMAINID { get; set; } |
| | | /// <summary> |
| | | /// 生产订单子码 |
| | | /// </summary> |
| | | public string FPRDMOENTYID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 日计划数量 |
| | | /// </summary> |
| | | public string FHQTY { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 日计划日期 |
| | | /// </summary> |
| | | public DateTime FHMASTERDATE { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 订单等级 |
| | | /// </summary> |
| | | public string FHOrderLev { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 库存组织 |
| | | /// </summary> |
| | | public string FStockOrgId { get; set; } |
| | | /// <summary> |
| | | /// 组织名称 |
| | | /// </summary> |
| | | public string OrgFnumber { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 单位用量 |
| | | /// </summary> |
| | | public decimal dwyl { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 预计消耗用量 |
| | | /// </summary> |
| | | public decimal PlanCount { get; set; } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | <Compile Include="Untity\XhHttpClient.cs" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <None Include="..\..\.editorconfig"> |
| | | <Link>.editorconfig</Link> |
| | | </None> |
| | | <None Include="app.config" /> |
| | | <None Include="Config\kdapi.config" /> |
| | | <None Include="packages.config" /> |