王 垚
2022-09-05 226dd2b152c0fb06b3f8108ac7740216a8a453c6
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
using System.ComponentModel;
using Kingdee.BOS;
using Kingdee.BOS.Core;
using Kingdee.BOS.ServiceHelper;
using System.Data;
 
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,FSCRAPRATE,FFIXSCRAPQTY
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")
                                //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
                            ModelEnty.Add("FNumerator", Convert.ToInt32(DataRow[i]["FNumerator"].ToString()));//分母
                            ModelEnty.Add("FDenominator", Convert.ToInt32(DataRow[i]["FDenominator"].ToString()));//分子
                            ModelEnty.Add("FFIXSCRAPQTY", DataRow[i]["FFIXSCRAPQTY"].ToString());//固定损耗
                            ModelEnty.Add("FHQtyScrap", DataRow[i]["FSCRAPRATE"].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")
                            //LogHelper.Error(saveIsSuc);
                    }
                }
            }
            catch (System.Exception ex)
            {
                //LogHelper.Error(ex.Message.ToString());
            }
 
        }
 
    }
}