王 垚
2020-11-24 529179f84e3fd76c359d604815788414a540deba
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
using System.ComponentModel;
using Kingdee.BOS.Contracts;
using Kingdee.BOS;
using Kingdee.BOS.Core;
using Kingdee.BOS.ServiceHelper;
using System.Data;
using ZD.Cloud.Logger;
using Newtonsoft.Json.Linq;
using System;
using Kingdee.BOS.Util;
using System.Linq;
using ZD.Cloud.WebApi;
 
namespace Demo.TimedTaskPlugIn.PRD
{
    [Description("日计划用料清单执行计划")]
    [HotUpdate]
    public class DayPlanPPBomBillTimeTask : Kingdee.BOS.Contracts.IScheduleService
    {
 
        public void Run(Context ctx, Schedule schedule)
        {
            CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/");
            try
            {
                string sql = string.Format(@"
/*dialect*/
select t1.FID,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER
FROM Sc_WorkBillSortBillSub t1
JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID
JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID
JOIN T_PRD_PPBOMENTRY T4 ON T3.FID=T4.FID
JOIN T_BD_MATERIAL T5 ON T3.FMATERIALID=T5.FMATERIALID
JOIN T_BD_MATERIAL T6 ON T4.FMATERIALID=T6.FMATERIALID
JOIN T_BD_UNIT T7 ON T3.FUNITID = T7.FUNITID
JOIN T_BD_UNIT T8 ON T4.FUNITID = T8.FUNITID
 LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FID=T9.FDayPlanFID
 join T_ORG_Organizations t10 on t2.FHPRDORGID = t10.FORGID
 join T_ENG_WORKCENTER t11 on t2.FHSOURCEID = t11.FID 
where DATEDIFF(DAY,GETDATE(),FHMASTERDATE)=2
"
);
                DataSet ds = DBServiceHelper.ExecuteDataSet(ctx, sql);
                DataTable dt = ds.Tables[0];
                if (dt.Rows.Count > 0)
                {
                    DataView dv = dt.DefaultView;
                    DataTable _dt = dv.ToTable(true, "FID");
                    foreach (DataRow dr in _dt.Rows)
                    {
                        DataRow[] DataRow = dt.Select("FID =" + dr[0]);
                        if (DataRow[0]["FBillNo"].ToString() != "")
                        {
                            //删除原有日计划用料清单
                            JObject deletemodel = new JObject();
                            deletemodel.Add("Numbers", DataRow[0]["FBillNo"].ToString());
 
                            JObject _saveObj = JObject.Parse(cloudClient.Delete("Paez_Sc_DayPlanPPBomBill", deletemodel.ToString()));
                            string _saveIsSuc = _saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
 
                            if (_saveIsSuc == "TRUE")
                            {
 
                            }
                            else
                            {
                                LogHelper.Error(_saveIsSuc);
                            }
                        }
                        JObject model = new JObject();
                        model.Add("FHDate", DateTime.Now);
                        model.Add("FOrgId", new JObject() { ["Fnumber"] = DataRow[0]["FORGNUMBER"].ToString() });//发料组织
                        model.Add("FHMaterID", new JObject() { ["Fnumber"] = DataRow[0]["FNUMBER"].ToString() });//物料
                        model.Add("FHWorkDate", DataRow[0]["FHMASTERDATE"].ToString());//日工单日期 FHWorkDate
                        model.Add("FHQty", DataRow[0]["FHQTY"].ToString());//主产品数量:FHQty 
                        model.Add("FHUnitID", new JObject() { ["Fnumber"] = DataRow[0]["FUNITNUMBER"].ToString() });//单位:FHUnitID 
                        model.Add("FDayPlanFID", DataRow[0]["FID"].ToString());//日计划工单内码 
                        JArray Entry = new JArray();
                        for (int i = 0; i < DataRow.Count(); i++)
                        {
                            JObject ModelEnty = new JObject();
                            ModelEnty.Add("FHMaterSubID", new JObject() { ["Fnumber"] = DataRow[i]["FNUMBER2"].ToString() });//子物料FHMaterSubID
                            ModelEnty.Add("FHUnitSubID", new JObject() { ["Fnumber"] = DataRow[i]["FUNITNUMBER2"].ToString() });//单位FHUnitSubID
                            ModelEnty.Add("FHQtyMust", DataRow[i]["FHQtyMust"].ToString());//应发数量FHQtyMust
                            ModelEnty.Add("FHQtySub", DataRow[i]["FHQtyMust"].ToString());//数量FHQtySub
                            ModelEnty.Add("FHPPBomInterID", DataRow[i]["FPPBOM"].ToString());//用料清单主内码FHPPBomInterID
                            ModelEnty.Add("FHPPBomEntryID", DataRow[i]["FENTRYID"].ToString());//用料清单子内码FHPPBomEntryID
                            ModelEnty.Add("FHSourceID", new JObject() { ["Fnumber"] = DataRow[i]["FHSOURCENUMBER"].ToString() });//生产资源FHSourceID
 
                            //model.Add("FHMaterSubID", DataRow[i]["FHQtyMust"].ToString());//分母分子
                            Entry.Add(ModelEnty);
                        }
                        model.Add("FEntity", Entry);
                        JObject jsonRoot = new JObject()
                        {
                            ["Creator"] = "",
                            ["NeedUpDateFields"] = new JArray(),
                            ["NeedReturnFields"] = new JArray(),
                            ["IsDeleteEntry"] = "true",
                            ["SubSystemId"] = "",
                            ["IsVerifyBaseDataField"] = "false",
                            ["Model"] = model
                        };
                        var result = cloudClient.Save("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString());
                        JObject saveObj = JObject.Parse(result);
                        string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
 
                        if (saveIsSuc == "TRUE")
                        {
 
                        }
                        else
                        {
                            LogHelper.Error(saveIsSuc);
 
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                LogHelper.Error(ex.Message.ToString());
            }
 
        }
 
    }
}