From 255502964b59890215f7d5a3537d32ba698379f4 Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期三, 17 二月 2021 15:02:03 +0800
Subject: [PATCH] 采购订单生成提料计划

---
 src/BLL/Demo.TimedTaskPlugIn/Demo.TimedTaskPlugIn.csproj     |    1 
 src/BLL/Demo.TimedTaskPlugIn/PRD/TLPlanTimeTaskByPurchase.cs |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 156 insertions(+), 0 deletions(-)

diff --git a/src/BLL/Demo.TimedTaskPlugIn/Demo.TimedTaskPlugIn.csproj b/src/BLL/Demo.TimedTaskPlugIn/Demo.TimedTaskPlugIn.csproj
index 70b5a35..508e106 100644
--- a/src/BLL/Demo.TimedTaskPlugIn/Demo.TimedTaskPlugIn.csproj
+++ b/src/BLL/Demo.TimedTaskPlugIn/Demo.TimedTaskPlugIn.csproj
@@ -149,6 +149,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="PRD\StockChangeDynamicAlignment.cs" />
+    <Compile Include="PRD\TLPlanTimeTaskByPurchase.cs" />
     <Compile Include="PRD\TLPlanTimeTask.cs" />
     <Compile Include="PRD\DayPlanPPBomBillTimeTask.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
diff --git a/src/BLL/Demo.TimedTaskPlugIn/PRD/TLPlanTimeTaskByPurchase.cs b/src/BLL/Demo.TimedTaskPlugIn/PRD/TLPlanTimeTaskByPurchase.cs
new file mode 100644
index 0000000..357534e
--- /dev/null
+++ b/src/BLL/Demo.TimedTaskPlugIn/PRD/TLPlanTimeTaskByPurchase.cs
@@ -0,0 +1,155 @@
+锘縰sing 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;
+using Demo.Model.Model;
+using Demo.Model.Model.PODemandPlan;
+using System.Diagnostics;
+using System.Collections.Generic;
+using ZD.Share.Common;
+
+namespace Demo.TimedTaskPlugIn.PRD
+{
+    [Description("閲囪喘璁㈠崟鐢熸垚鎻愭枡璁″垝")]
+    [HotUpdate]
+    public class TLPlanTimeTaskByPurchase : Kingdee.BOS.Contracts.IScheduleService
+    {
+        CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+        public Context Context;
+        public void Run(Context ctx, Schedule schedule)
+        {
+            try
+            {
+                Stopwatch sw = new Stopwatch();
+                sw.Start();
+                Context = ctx;
+                string sql = @"/*dialect*/  select count(*) js from t_PUR_POOrder a
+join t_PUR_POOrderEntry b on a.FID = b.FID
+where FBILLTYPEID in 
+(
+select FBILLTYPEID from T_BAS_BILLTYPE
+where FBILLFORMID = 'PUR_PurchaseOrder'
+and FNUMBER in('CGDD09_SYS', 'CGDD10_SYS')
+)
+and FDOCUMENTSTATUS = 'C'
+and FENTRYID not in  (select distinct FHPOOrderEntryID from Cg_PODemandPlanBillSub)";
+                int ret = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
+                if (ret == 0)
+                    return;
+                Extraction();
+                LogHelper.Info("鎻愭枡璁″垝鏃堕暱锛�" + sw.Elapsed);
+                sw.Stop();
+
+            }
+            catch (System.Exception ex)
+            {
+                LogHelper.Error(ex.Message.ToString());
+            }
+        }
+
+        public void Extraction()
+        {
+            try
+            {
+                //鎻愭枡璁″垝棰勫鐞� 娓呯悊鎻愭枡璁″垝鍗曟暟鎹� 鏇存柊閲囪喘璁㈠崟鎻愭枡璁″垝鏁伴噺
+                string sql = @"select a.FID,b.FENTRYID,B.FSEQ,a.FBILLNO,A.FSUPPLIERID,d.FNUMBER as FSUPPLIERNAME,a.FDATE,b.FMATERIALID,c.FNUMBER as FMATERIALNAME,b.FQTY from t_PUR_POOrder a
+join t_PUR_POOrderEntry b on a.FID = b.FID
+join T_BD_MATERIAL c on b.FMATERIALID = c.FMATERIALID
+join T_BD_SUPPLIER d on a.FSUPPLIERID=d.FSUPPLIERID
+left join Cg_PODemandPlanBillSub e on b.FENTRYID =e.FHPOOrderEntryID
+where a.FBILLTYPEID in 
+(
+select FBILLTYPEID  from T_BAS_BILLTYPE
+where FBILLFORMID = 'PUR_PurchaseOrder'
+and FNUMBER in('CGDD09_SYS','CGDD10_SYS')
+)
+and a.FDOCUMENTSTATUS = 'C'
+";
+
+                DataTable purDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+                sql = @"select distinct a.FID from t_PUR_POOrder a
+join t_PUR_POOrderEntry b on a.FID = b.FID
+join T_BD_MATERIAL c on b.FMATERIALID = c.FMATERIALID
+join T_BD_SUPPLIER d on a.FSUPPLIERID = d.FSUPPLIERID
+left join Cg_PODemandPlanBillSub e on b.FENTRYID = e.FHPOOrderEntryID
+where a.FBILLTYPEID in 
+(
+select FBILLTYPEID from T_BAS_BILLTYPE
+where FBILLFORMID = 'PUR_PurchaseOrder'
+and FNUMBER in('CGDD09_SYS', 'CGDD10_SYS')
+)
+and a.FDOCUMENTSTATUS = 'C'
+";
+                DataTable _purDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+
+                JArray FinalyResult = new JArray();
+                int tlmmm = 1;
+                if (_purDt.Rows.Count > 0)
+                {
+                    foreach (DataRow _dr in _purDt.Rows)
+                    {
+                        DataRow[] purDtRows = purDt.Select($"FID = '{_dr[0]}'");
+                        LogHelper.Info(purDtRows.ToString());
+                        JObject model = new JObject();
+                        model.Add("FHDate", purDtRows[0]["FDATE"].ToString());
+                        model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
+                        model.Add("FSupplierID", new JObject() { ["Fnumber"] = purDtRows[0]["FSUPPLIERNAME"].ToString() });
+                        JArray Fentity = new JArray();
+                        foreach (DataRow drN in purDtRows)
+                        {
+                            JObject FentityModel = new JObject();
+                            FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                            FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = drN["FMATERIALNAME"].ToString() });//鐗╂枡
+                            FentityModel.Add("FHQty", drN["FQty"].ToString());//鏁伴噺
+                            FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//閲囪喘缁勭粐
+                            FentityModel.Add("FHPOOrderInterID", drN["FID"].ToString());// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
+                            FentityModel.Add("FHPOOrderEntryID", drN["FENTRYID"].ToString()); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
+                            FentityModel.Add("FHPOOrderBillNo", drN["FBILLNO"].ToString()); //閲囪喘璁㈠崟鍙凤細FHPOOrderBillNo
+                            FentityModel.Add("FHPOOrderFseq", drN["FSEQ"].ToString()); // 
+                            FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //鍗曚綅
+                            Fentity.Add(FentityModel);
+                        }
+                        model.Add("FEntity", Fentity);
+                        FinalyResult.Add(model);
+                        if ((tlmmm >= 20 || tlmmm == _purDt.Rows.Count) && (tlmmm % 20 == 0 || tlmmm == _purDt.Rows.Count))
+                        {
+                            LogHelper.Info("鎻愭枡璁″垝鏂板鎵归噺鎵ц锛岃褰曞惊鐜殑褰撳墠鏉℃暟" + tlmmm);
+                            JObject jsonRoot = new JObject()
+                            {
+                                ["Creator"] = "",
+                                ["NeedUpDateFields"] = new JArray(),
+                                ["NeedReturnFields"] = new JArray(),
+                                ["IsDeleteEntry"] = "false",
+                                ["SubSystemId"] = "",
+                                ["IsVerifyBaseDataField"] = "false",
+                                ["Model"] = FinalyResult
+                            };
+                            CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+                            var result = cloudClient.BatchSave("paez_PODemandPlan", jsonRoot.ToString());
+                            JObject saveObj = JObject.Parse(result);
+                            string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                            if (saveIsSuc != "TRUE")
+                            {
+                                LogHelper.Error(jsonRoot.ToString());
+                            }
+                            FinalyResult = new JArray();
+                        }
+                        tlmmm++;
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info("鎻愭枡璁″垝璺冲嚭锛�" + ex.Message.ToString());
+            }
+        }
+    }
+}

--
Gitblit v1.9.1