王 垚
2021-04-09 25f2835fa45e704f6eccf2feeaa3d2e95c224e2f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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;
using ZD.Cloud.Logger;
 
namespace Demo.BillView
{
    [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());
            }
 
        }
    }
}