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.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Kingdee.BOS.ServiceHelper;
using System.Threading.Tasks;
namespace Demo.BillView
{
[Description("齐套分析列表功能")]
[HotUpdate]
public class ProCompleteAnalysisDetail : AbstractDynamicFormPlugIn
{
bool did = false;
public override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (this.View.OpenParameter.GetCustomParameter("FHMainICMOInterID") == null)
{
SearchList();
}
else
{
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}' ", 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("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("FHMainICMOInterIDr", dt.Rows[i]["FHMainICMOInterIDr"].ToString(), i);//生产订单内码
this.Model.SetValue("FPRDBillNo", dt.Rows[i]["FPRDBillNo"].ToString(), i);//生产订单内码
}
}
did = true;
}
}
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.ToUpper() == "TBFILTER")
{
SearchList();
}
}
///
/// 行双击 跳出齐套分析明细列表
///
///
public override void EntityRowDoubleClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e)
{
var m = e.Row;
var n = e.Key;
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()));
this.View.ShowForm(formPa);
}
///
/// 查询事件
///
public void SearchList()
{
string sqlwhere = " where 1=1";
string sql = @"
/*dialect*/
select * from (
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
)AS T
";
//物料
if ((this.Model.GetValue("FMateralId") as DynamicObject) != null)
{
string FMateralId = (this.Model.GetValue("FMateralId") as DynamicObject)["Id"].ToString();
if (!string.IsNullOrEmpty(FMateralId))
sqlwhere += $" and FHMATERID='{FMateralId}'";
}
//齐套
string FCompleteStatus = Convert.ToString(this.Model.GetValue("FCompleteStatus"));
if (!string.IsNullOrEmpty(FCompleteStatus))
sqlwhere += $" and CompleteStatus='{FCompleteStatus}'";
//生产订单号
string PRDBillNo = Convert.ToString(this.Model.GetValue("FScOrderNo"));
if (!string.IsNullOrEmpty(PRDBillNo))
sqlwhere += $" and PRDBillNo='{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++)
{
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", 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("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("FHMainICMOInterIDr", dt.Rows[i]["FHMainICMOInterIDr"].ToString(), i);//生产订单内码
this.Model.SetValue("FPRDBillNo", dt.Rows[i]["FPRDBillNo"].ToString(), i);//生产订单内码
}
}
this.View.UpdateView();
did = true;
}
}
}