王 垚
2021-02-17 255502964b59890215f7d5a3537d32ba698379f4
采购订单生成提料计划
1个文件已修改
1个文件已添加
156 ■■■■■ 已修改文件
src/BLL/Demo.TimedTaskPlugIn/Demo.TimedTaskPlugIn.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/BLL/Demo.TimedTaskPlugIn/PRD/TLPlanTimeTaskByPurchase.cs 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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" />
src/BLL/Demo.TimedTaskPlugIn/PRD/TLPlanTimeTaskByPurchase.cs
New file
@@ -0,0 +1,155 @@
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;
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());// 采购订单内码:FHPOOrderInterID
                            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());
            }
        }
    }
}