using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System; using System.ComponentModel; using System.Data; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; namespace Demo.BillView.PRD { [Description("生产排程单动态表单-页面展示")] [HotUpdate] public class ProductScheduleShowList : AbstractDynamicFormPlugIn { public override void OnLoad(EventArgs e) { base.OnLoad(e); SearchList(); } public void SearchList() { try { //界面下方“生产订单”的页签,加载未排程已审核的生产订单 (测试未加条件 更改后去除该标记) string sql = @" SELECT A.FBILLNO,B.FSEQ,B.FMATERIALID,B.FQTY,B.FPlanStartDate,b.FPlanFinishDate,b.FSaleOrderNo,c.FCustId,d.FQTY as FQTYXSDD ,d.FNOTE,d.FPLANDELIVERYDATE,e.FSCOrderNo FROM T_PRD_MO a LEFT JOIN T_PRD_MOENTRY b on a.FID = B.FID left join T_SAL_ORDER c on b.FSaleOrderNo =c.FBILLNO left join T_SAL_ORDERENTRY d on c.FID = d.FID and b.FMATERIALID = d.FMATERIALID left join Sc_WorkBillSortBillMain e on b.FMATERIALID = e.FHMaterID and b.FSEQ = e.FSRCBILLENTRYSEQ and a.FBILLNO = e.FSCOrderNo where ISNULL(e.FSCOrderNo,'')=''"; DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { this.Model.CreateNewEntryRow("FScddEntity"); this.Model.SetValue("FSEQ", i + 1, i);//序号 this.Model.SetValue("FProOrderNoSC", dt.Rows[i]["FBILLNO"], i);//生产订单号 this.Model.SetValue("FSRCBILLENTRYSEQSC", dt.Rows[i]["FSEQ"], i);//生产订单明细号 this.Model.SetValue("FSCOrderCountSC", dt.Rows[i]["FQTY"], i);//生产订单数 this.Model.SetValue("FPlanBeginDateSC", dt.Rows[i]["FPlanStartDate"], i);//计划开工日期 this.Model.SetValue("FPlanEndDateSC", dt.Rows[i]["FPlanFinishDate"], i);//计划完工日期 this.Model.SetValue("FSalOrderNoSC", dt.Rows[i]["FSaleOrderNo"], i);//销售订单号 this.Model.SetValue("FMATERIALIDSC", dt.Rows[i]["FMATERIALID"], i);//物料 this.Model.SetValue("FCustormerSC", dt.Rows[i]["FCustId"], i);//客户 this.Model.SetValue("FSalOrderCountSC", dt.Rows[i]["FQTYXSDD"], i);//销售订单数量 this.Model.SetValue("FSalDeliveryDateSC", dt.Rows[i]["FPLANDELIVERYDATE"], i);//销售订单交货期 this.Model.SetValue("FOrderRemakeSC", dt.Rows[i]["FNOTE"], i);//订单备注 } } //待排任务 初始化加载 where FNoScheduled > 0 未排产数量大于0 sql = @"select * from Sc_WorkBillSortBillMain "; dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0]; if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { this.Model.CreateNewEntryRow("FDprwEntity"); this.Model.SetValue("FSczy", dt.Rows[i]["FHSourceID"], i);//生产资源 this.Model.SetValue("FProOrderNo", dt.Rows[i]["FSCOrderNo"], i);//生产订单号 this.Model.SetValue("FSRCBILLENTRYSEQ", dt.Rows[i]["FSRCBILLENTRYSEQ"], i);//生产订单明细行号 this.Model.SetValue("FMATERIALID", dt.Rows[i]["FHMaterID"], i);//物料代码 this.Model.SetValue("FSCOrderCount", dt.Rows[i]["FOrderQuantity"], i);//生产订单数 //this.Model.SetValue("FFinishConut", dt.Rows[i]["FNOTE"], i);//完工数 (没有对应字段) this.Model.SetValue("FStoredCount", dt.Rows[i]["FHInstockQty"], i);//已入库数 this.Model.SetValue("FPriority", dt.Rows[i]["FHYX"], i);//优先级 this.Model.SetValue("FCapacity", dt.Rows[i]["FHWorkQty"], i);//产能 this.Model.SetValue("FPlanBeginDate", dt.Rows[i]["FHPlanBeginDate"], i);//计划开始日期 this.Model.SetValue("FPlanEndDate", dt.Rows[i]["FHPlanEndDate"], i);//计划完工日期 this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHOrderQty"], i);//销售订单数量 //this.Model.SetValue("FCustormer", dt.Rows[i]["FNOTE"], i);//客户 (没有对应字段) this.Model.SetValue("FSalOrderNo", dt.Rows[i]["FHSeOrderBillNo"], i);//销售订单号 //this.Model.SetValue("FSalDeliveryDate", dt.Rows[i]["FNOTE"], i);//销售订单交货期 (没有对应字段) //this.Model.SetValue("FOrderRemake", dt.Rows[i]["FNOTE"], i);//订单备注 (没有对应字段) this.Model.SetValue("FID", dt.Rows[i]["FID"], i);//日计划工单ID } } //自动排程 初始化加载 where FNoScheduled > 0 未排产数量大于0 if (dt.Rows.Count > 0) { DateTime DateNow = DateTime.Now;//获取当前日期 for (int i = 0; i < dt.Rows.Count; i++) { this.Model.CreateNewEntryRow("FZdpcEntity"); this.Model.SetValue("FSczyZD", dt.Rows[i]["FHSourceID"], i);//生产资源 this.Model.SetValue("FProOrderNoZD", dt.Rows[i]["FSCOrderNo"], i);//生产订单号 this.Model.SetValue("FSRCBILLENTRYSEQZD", dt.Rows[i]["FSRCBILLENTRYSEQ"], i);//生产订单明细行号 this.Model.SetValue("FMATERIALIDZD", dt.Rows[i]["FHMaterID"], i);//物料代码 this.Model.SetValue("FSCOrderCountZD", dt.Rows[i]["FOrderQuantity"], i);//生产订单数 //this.Model.SetValue("FFinishConutZD", dt.Rows[i]["FNOTE"], i);//完工数 (没有对应字段) this.Model.SetValue("FNoScheduledCount", dt.Rows[i]["FNoScheduled"], i);//待排数 this.Model.SetValue("FPriorityZD", dt.Rows[i]["FHYX"], i);//优先级 this.Model.SetValue("FCapacityZD", dt.Rows[i]["FHWorkQty"], i);//产能 this.Model.SetValue("FIDZD", dt.Rows[i]["FID"], i);//日计划工单ID 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) { DateTime start = Convert.ToDateTime(DateNow.ToShortDateString()); DateTime end = Convert.ToDateTime(Convert.ToDateTime(dr["FHMASTERDATE"]).ToShortDateString()); TimeSpan getDay = end.Subtract(start); if (getDay.Days > 60) continue; 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; //单据体行锁定字段 } } for (int m = 0; m <= 60; m++) { // this.View.GetControl("FT" + "" + m + "").Text = DateNow.AddDays(m).ToShortDateString(); this.View.GetControl("FT" + "" + m + "").SetValue(DateNow.AddDays(m).ToShortDateString()); } } } catch (Exception ex) { //LogHelper.Error("生产排程单动态表单-页面展示 抛出异常:" + ex.Message.ToString()); this.View.ShowErrMessage("错误:" + ex.Message.ToString()); } } } }