王 垚
2021-03-19 2a2e3fbbef29bbc568b10f2bd45bd6e658443d6e
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -1,7 +1,7 @@
using Demo.Model.Model;
using Demo.Model.Model.PODemandPlan;
using Demo.Utility;
using K3Cloud.Extend.Utils;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Const;
@@ -39,7 +39,6 @@
using System.Web;
using System.Windows.Documents;
using ZD.Cloud.Logger;
using ZD.Cloud.WebApi;
using ZD.Share.Common;
namespace Demo.DynamicForm.PRD
@@ -268,7 +267,7 @@
            jObject.Put("desc", "请点击打开附件:");
            jObject.Put("urltitle", "这是文件名");
            this.View.AddAction(JSAction.openUrlWindow, new JSONArray { jObject });
        }
        }
        /// <summary>
        /// 锁定
        /// </summary>
@@ -279,16 +278,16 @@
            string sql = $"/*dialect*/update t1 set t1.FHLockedSub=1 from Sc_WorkBillSortBillSub t1  join Sc_WorkBillSortBillMain t2 on  t1.FID = t2.FID  where  FHMASTERDATE between  DATEADD(day,-1,getdate()) and DATEADD(day,{day - 1},getdate())";
            sqlList.Add(sql);
            int result = DBServiceHelper.ExecuteBatch(Context, sqlList);
            if (result > 0)
            {
                //锁定后生成日计划用料清单 及 提料计划
                DayPlanPPBomBillBatch();
                Extraction();
                SearchList();
                this.View.ShowMessage("操作成功");
            }
            else
                this.View.ShowMessage("操作失败,联系管理员!");
            //if (result > 0)
            //{
            //锁定后生成日计划用料清单 及 提料计划
            DayPlanPPBomBillBatch();
            Extraction();
            SearchList();
            this.View.ShowMessage("操作成功");
            //}
            //else
            //    this.View.ShowMessage("操作失败,联系管理员!");
        }
        /// <summary>
        /// 解锁
@@ -646,7 +645,7 @@
                    if (item.FOwnerId != null)
                        jsonModel.Add("FOwnerId", new JObject() { ["FNUMBER"] = item.FOwnerId });
                    jsonRoot.Add("Model", jsonModel);
                    CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/");
                    CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
                    var result = cloudClient.Save("paez_CompleteAnalysisTemp", jsonRoot.ToString());
                    JObject saveObj = JObject.Parse(result);
                    string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
@@ -897,7 +896,7 @@
                            ["IsVerifyBaseDataField"] = "false",
                            ["Model"] = Fentity
                        };
                        CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/");
                        CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
                        var result = cloudClient.BatchSave("paez_CompleteAnalysisTemp", jsonRoot.ToString());
                        JObject saveObj = JObject.Parse(result);
                        string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
@@ -1490,7 +1489,7 @@
                            ["Model"] = model
                        };
                        CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/");
                        CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
                        var result = cloudClient.Save("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString());
                        JObject saveObj = JObject.Parse(result);
                        string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
@@ -1520,7 +1519,7 @@
                string sql = string.Format(@"
/*dialect*/
 select t1.FID,t1.FEntryID,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 FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO,
t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType
t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType
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
@@ -1575,7 +1574,8 @@
                            FOwnerID = dr["FORGNUMBER"].ToString(),
                            FEntrustPickOrgId = dr["FORGNUMBER"].ToString(),
                            FMOID = dr["FMOID"].ToString(),
                            FIssueType = dr["FIssueType"].ToString()
                            FIssueType = dr["FIssueType"].ToString(),
                            FMaterialType = dr["FMaterialType"].ToString()
                        });
                    }
                    LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed);
@@ -1622,7 +1622,8 @@
                            ModelEnty.Add("FEntrustPickOrgId", new JObject() { ["Fnumber"] = _item.FEntrustPickOrgId });// 
                            ModelEnty.Add("FMOID", _item.FMOID);//  
                            ModelEnty.Add("FISSUETYPE", _item.FIssueType);//  
                            ModelEnty.Add("FSEQ", FSEQ);//
                            ModelEnty.Add("FMaterialType", _item.FMaterialType);//
                                                                                // ModelEnty.Add("FSEQ", FSEQ);//
                            Entry.Add(ModelEnty);
                            FSEQ++;
@@ -1638,18 +1639,18 @@
                                ["Creator"] = "",
                                ["NeedUpDateFields"] = new JArray(),
                                ["NeedReturnFields"] = new JArray(),
                                ["IsDeleteEntry"] = "false",
                                ["IsDeleteEntry"] = "true",
                                ["SubSystemId"] = "",
                                ["IsVerifyBaseDataField"] = "false",
                                ["Model"] = Fentity
                            };
                            CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/");
                            CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
                            var result = cloudClient.BatchSave("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString());
                            JObject saveObj = JObject.Parse(result);
                            string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
                            if (saveIsSuc != "TRUE")
                            {
                                LogHelper.Error(jsonRoot.ToString());
                                LogHelper.Error(saveObj.ToString());
                            }
                            Fentity = new JArray();
                        }
@@ -1693,13 +1694,14 @@
                //采购订单数据
                sql = @"
 /*dialect*/
select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,(t2.FQTY-t2.FPODemandPlanCount)FQTY,FPurchaseOrgId FStockOrgId,t5.FNUMBER FORGNumber,FSTOCKINQTY,FReceiveQty,FCloseStatus,FMRPCLOSESTATUS from t_PUR_POOrder t1
 select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,(t2.FQTY-t2.FPODemandPlanCount)FQTY,FPurchaseOrgId FStockOrgId,t5.FNUMBER FORGNumber,FSTOCKINQTY,FReceiveQty,FCloseStatus,FMRPCLOSESTATUS from t_PUR_POOrder t1
join t_PUR_POOrderEntry t2 on t1.FID = t2.FID
join t_BD_Supplier t3 on t1.FSUPPLIERID = t3.FSUPPLIERID
join  T_PUR_POORDERENTRY_R t4 on t2.FENTRYID = t4.FENTRYID
join T_ORG_Organizations t5 on t1.FPurchaseOrgId = t5.FORGID
where t2.FQTY-t2.FPODemandPlanCount>0
 and FCloseStatus in('A') and FMRPCLOSESTATUS in('A')
 and t1.FBillTypeID in('83d822ca3e374b4ab01e5dd46a0062bd','6d01d059713d42a28bb976c90a121142')
";
                List<PurchaseInventory> PurchaseInventory = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<PurchaseInventory>();
                LogHelper.Info("[提料计划准备阶段]可用采购订单数据sql:" + sql);
@@ -1742,7 +1744,7 @@
                List<DayPlanPpbom> DayPlanPpbom = ds.ToModelList<DayPlanPpbom>();
                //物料+库存组织分类
                var MaterialIDList = DayPlanPpbom.GroupBy(p => new { p.FMATERIALID, p.FStockOrgId }).Select(x => new PODemandPlanTemp { FMATERIALID = x.Key.FMATERIALID, FStockOrgId = x.Key.FStockOrgId }).ToList();
                var _MaterialIDList = MaterialIDList.Where(p => p.FMATERIALID == "162305").ToList();
                var _MaterialIDList = MaterialIDList.Where(p => p.FMATERIALID == "163165").ToList();
                LogHelper.Info("[提料计划准备阶段]总物料行数" + MaterialIDList.Count);
                //提料计划数据集临时存储集合
                List<PODemandPlanTemp> PODemandPlanTemp = new List<PODemandPlanTemp>();
@@ -1752,14 +1754,14 @@
                foreach (var item in MaterialIDList)
                {
                    //当前物料没有采购订单时 直接跳出
                    List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).ToList();
                    List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();
                    if (_PurchaseInventory.Count == 0)
                    {
                        LogHelper.Info("[提料计划开始]当前物料无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId);
                        continue;
                    }
                    //LogHelper.Info(item.FMATERIALID.ToString());
                    //当前物料和库存组织对应的需进行提料计划的数据
                    //当前物料和库存组织对应的需进行提料计划的数据
                    List<DayPlanPpbom> _DayPlanPpbom = DayPlanPpbom.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId).ToList();
                    decimal FMINPOQTY = _DayPlanPpbom.FirstOrDefault().FMINPOQTY;//最小起订量
                    double FFIXLEADTIME = _DayPlanPpbom.FirstOrDefault().FFIXLEADTIME;//提前期
@@ -1774,7 +1776,7 @@
                    foreach (var _item in _DayPlanPpbom)
                    {
                        i++;
                        _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).ToList();
                        _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();
                        if (_PurchaseInventory.Count == 0)
                        {
                            LogHelper.Info("[提料计划开始]当前物料明细无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId);
@@ -1786,9 +1788,9 @@
                        FEntryIdList.Add(_item.FENTRYID);
                        NeedQty += _item.NeedQty;
                        LogHelper.Info("记录明细id:" + _item.FENTRYID + "");
                        LogHelper.Info("总需求量:" + NeedQty + "");
                        LogHelper.Info("最小起订量:" + FMINPOQTY + "");
                        //LogHelper.Info("记录明细id:" + _item.FENTRYID + "");
                        //LogHelper.Info("总需求量:" + NeedQty + "");
                        //LogHelper.Info("最小起订量:" + FMINPOQTY + "");
                        if (NeedQty <= FMINPOQTY)
                        {
                            LogHelper.Info("[提料计划]当前物料明细无采购信息:" + item.FMATERIALID + ",数量:" + NeedQty + ",最小起订量:" + FMINPOQTY + "");
@@ -1801,7 +1803,8 @@
                        //{
                        foreach (var Purchase in _PurchaseInventory)
                        {
                            LogHelper.Info("物料:" + Purchase.FMATERIALID + ",采购订单数量:" + Purchase.FQTY);
                            LogHelper.Info("采购订单号测试:" + Purchase.FBillNo);
                            //LogHelper.Info("物料:" + Purchase.FMATERIALID + ",采购订单数量:" + Purchase.FQTY);
                            if (Purchase.FQTY >= NeedQty)
                            {
                                foreach (int id in FEntryIdList)
@@ -1851,13 +1854,13 @@
                                {
                                    var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault();
                                    decimal Qty = DayPlanPpbomls.NeedQty;//订单数量
                                    if (Qty == 0)
                                        LogHelper.Info("订单数量为0");
                                    //if (Qty == 0)
                                    //    LogHelper.Info("订单数量为0");
                                    if (Qty > _NeedQty)
                                        Qty = _NeedQty; //订单数量>采购订单数量 取采购订单
                                    if (_NeedQty == 0)
                                        LogHelper.Info("订单数量为0");
                                    //if (_NeedQty == 0)
                                    //    LogHelper.Info("订单数量为0");
                                    _NeedQty = _NeedQty - Qty;
                                    PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp
@@ -2025,8 +2028,9 @@
                    string PurchseFNUMBER = item.PurchseFNUMBER;
                    JObject model = new JObject();
                    model.Add("FHDate", date);
                    model.Add("FHRemark", "生产订单号:" + "测试呢呢");
                    model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
                    model.Add("FSupplierID", new JObject() { ["Fnumber"] = PurchseFNUMBER });
                    JArray Fentity = new JArray();
                    List<PODemandPlanTemp> _PODemandPlanList = PODemandPlanTemp.Where(x => x.FHMASTERDATE == date && x.PurchseFNUMBER == PurchseFNUMBER).ToList();
                    int FSEQ = 1;
@@ -2048,9 +2052,9 @@
                        FentityModel.Add("FHPOOrderEntryID", _item.PurchseFentryID); //采购订单子内码:FHPOOrderEntryID
                        FentityModel.Add("FHPOOrderBillNo", _item.PurchseFBillNo); //采购订单号:FHPOOrderBillNo
                        FentityModel.Add("FERPCLSID", _item.FErpClsID); //发料方式
                        FentityModel.Add("FSEQ", FSEQ); //发料方式
                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs"}); //发料方式
                        //FentityModel.Add("FSEQ", FSEQ); //发料方式
                        FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //发料方式
                        Fentity.Add(FentityModel);
                        FSEQ++;
                    }
@@ -2069,7 +2073,7 @@
                            ["IsVerifyBaseDataField"] = "false",
                            ["Model"] = FinalyResult
                        };
                        CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/");
                        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();