From 6ed23c03a18bf631039bf750ee456a5e2a582bfd Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期二, 05 一月 2021 14:16:24 +0800
Subject: [PATCH] 代码上传

---
 src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs |  215 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 196 insertions(+), 19 deletions(-)

diff --git a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
index 35959ca..c0631ae 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -17,6 +17,8 @@
 using Kingdee.BOS.ServiceHelper;
 using Kingdee.BOS.ServiceHelper.FileServer;
 using Kingdee.BOS.Util;
+using Kingdee.K3.Core.SCM.STK;
+using Kingdee.K3.SCM.ServiceHelper;
 using Newtonsoft.Json.Linq;
 using NPOI.HSSF.UserModel;
 using NPOI.SS.Formula.Functions;
@@ -57,29 +59,18 @@
                 if (e.BarItemKey.ToUpper() == "BTEXPORT")
                 {
                     ExportExcel();
-                    //this.View.ShowMessage("娴嬭瘯鍟�");
-
-
                     string path = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, PathName);
-
                     DynamicFormShowParameter dynamicForm = new DynamicFormShowParameter();
                     dynamicForm.FormId = "BOS_FileDownLoad";
                     dynamicForm.OpenStyle.ShowType = ShowType.Modal;
                     dynamicForm.CustomParams.Add("IsExportData", "true");
                     dynamicForm.CustomParams.Add("url", path);
-
                     this.View.ShowForm(dynamicForm);
-
-
-                    //ShowDownload();
-
                 }
-
                 if (e.BarItemKey.ToUpper() == "TBSEARCH")
                 {
                     SearchList();
                 }
-
                 if (e.BarItemKey.ToUpper() == "TBLOCK")
                 {
                     Lock();
@@ -103,18 +94,32 @@
                 //鎻愭枡璁″垝
                 if (e.BarItemKey.ToUpper() == "TBEXTRACTION")
                 {
-                    Extraction();
+                    try
+                    {
+                        COMPLETE();
+                        DayPlanPPBomBill();
+                        Extraction();
+                    }
+                    catch (Exception ex)
+                    {
+                        this.View.ShowErrMessage(ex.Message.ToString());
+                    }
+                    finally {
+                        this.View.ShowMessage("鎿嶄綔鎴愬姛锛�");
+
+                    }
+                    
                 }
                 //棰勭暀
                 if (e.BarItemKey.ToUpper() == "TBRESERVE")
                 {
-                    Extraction();
+                    Reserve();
                 }
                 //閲婃斁
                 if (e.BarItemKey.ToUpper() == "TBRELEASE")
                 {
 
-                    Extraction();
+                    Release();
                 }
             }
             catch (Exception ex)
@@ -2128,8 +2133,6 @@
                     FentityModel.Add("FDayPlanDate", _item.OLDDATE);//鏃ヨ鍒掑伐鍗曠被鍨�
                     FentityModel.Add("FHRelationQty", _item.PurchseFqty);//鍏宠仈鏁伴噺
                     FentityModel.Add("FFIXLEADTIME", _item.FFIXLEADTIME);//鎻愬墠鏈�
-
-
                     FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = _item.FORGNumber });//閲囪喘缁勭粐
                     FentityModel.Add("FHPOOrderInterID", _item.PurchseFID);// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID
                     FentityModel.Add("FHPOOrderEntryID", _item.PurchseFentryID); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID
@@ -2147,7 +2150,6 @@
                     ["IsVerifyBaseDataField"] = "false",
                     ["Model"] = model
                 };
-
                 CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/");
                 var result = cloudClient.Save("paez_PODemandPlan", jsonRoot.ToString());
                 JObject saveObj = JObject.Parse(result);
@@ -2163,13 +2165,188 @@
                     LogHelper.Error(saveIsSuc);
 
                 }
-
             }
             DBServiceHelper.ExecuteBatch(Context, sqlList);
-            this.View.ShowMessage("鎿嶄綔鎴愬姛");
             // var PODemandPlanList22 = PODemandPlanTemp.GroupBy(p => new   {p.FSUPPLIERID,     p.FHMASTERDATE }).ToList();
+        }
+        /// <summary>
+        /// 1.閿佸簱锛屽叿浣撳瓧娈垫牴鎹笟鍔″崟鎹喅瀹氾紝鈥業nv鈥欒〃绀哄嵆鏃跺簱瀛橈紝鈥楩InvDetailID鈥欎负鍗虫椂搴撳瓨ID
+        /// </summary>
+        public void Reserve()
+        {
+            try
+            {
+                decimal ReserveCount = Convert.ToDecimal((this.Model.GetValue("FReservedCount")));
+                if (ReserveCount == 0)
+                {
+                    this.View.ShowMessage("璇疯緭鍏ラ鐣欐暟閲�");
+                    return;
+                }
+                //鑾峰彇鍗曟嵁浣撲俊鎭�
+                Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");
+                //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎
+                DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
+                EntryGrid grid = this.View.GetControl<EntryGrid>("FEntity");
+                //鎬诲簱瀛� 鐗╂枡+搴撳瓨缁勭粐+搴撳瓨鏁伴噺
+                DataSet ds = DBServiceHelper.ExecuteDataSet(Context, @" 
+/*dialect*/ 
+ select  sum(isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0))FBASEQTY,T1.FStockOrgId,T1.FMATERIALID from 
+(
+select a.FHPRDORGID FStockOrgId,T2.FMATERIALID from SC_WORKBILLSORTBILLMAIN a
+join SC_WORKBILLSORTBILLSub b on a.FID = b.FID
+join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID
+LEFT JOIN(select FID,FMATERIALID from T_PRD_PPBOMENTRY
+group by FMATERIALID,FID) T2 on T1.FID = t2.FID
+group by a.FHPRDORGID,T2.FMATERIALID
+) T1 
+LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID 
+LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID
+--where T1.FMATERIALID in (105773)
+group by T1.FStockOrgId,T1.FMATERIALID
+");
+                ListInventoryByStockOrgId = ds.ToModelList<PRD_Inventory>();
+                foreach (DynamicObject current in entityDataObjoct)
+                {
+                    if (Convert.ToString(current["FFOCUS"]) == "False")
+                        continue;
+                    string sql = string.Format(@"
+/*dialect*/
+--鐢熶骇鐢ㄦ枡娓呭崟鍒楄〃
+SELECT T1.FID,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty,FPRDORGID FStockOrgId,
+T2.FMATERIALID FMATERIALID2,T4.FNumber,T2.FNeedQty,convert(decimal(18,2),FNeedQty/FQty ) as dwyl
+--,isnull(t3.FBASEQTY,0)FBASEQTY
+ FROM T_PRD_PPBOM T1
+LEFT JOIN (select FID,MAX(FENTRYID)FENTRYID,SUM(FNeedQty)FNeedQty,FMATERIALID  from T_PRD_PPBOMENTRY where FMoId='{0}'
+group by FMATERIALID,FID ) T2 on T1.FID=t2.FID
+--LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID
+LEFT JOIN T_BD_MATERIAL T4 on T2.FMATERIALID=T4.FMATERIALID
+where t1.FMoId='{0}'    and T1.FMaterialID='{1}'
+", current["FHMainSourceInterID"].ToString(), current["FMatrailId_Id"].ToString());
+                    ds = DBServiceHelper.ExecuteDataSet(Context, sql);
+                    var PpbomList = ds.ToModelList<PRD_PPBOM>();
+                    //褰撳墠鏈�澶ч綈濂楁暟 涓嬪眰闇�姹傛暟閲�/鐖剁骇闇�姹傛暟閲�=鍗曚綅鐢ㄦ枡
+                    //var SumGetComplete = Math.Floor(PpbomList.Min(t => t.FBASEQTY / (t.FNeedQty / t.FQty)));
+                    //鏈�澶ч綈濂楁暟
+                    var result = (from a in PpbomList
+                                  join b in ListInventoryByStockOrgId
+                                  on new { materialId = a.FMATERIALID2, stockOrgId = a.FStockOrgId }
+                                  equals new { materialId = b.FMATERIALID, stockOrgId = b.FStockOrgId }
+                                  into g
+                                  from b in g.DefaultIfEmpty()
+                                  select new
+                                  {
+                                      value = (b?.FBASEQTY / a.dwyl) ?? 0
+                                  }).ToList().Min(x => x.value);
+                    if (result < ReserveCount)
+                    {
+                        this.View.ShowErrMessage("褰撳墠搴撳瓨瓒呭嚭鍙鐣欐渶澶ф暟锛�" + result + "");
+                        return;
+                    };
+                    //灏嗛鐣欐暟閲忓垎閰嶅埌鏃ヨ鍒掑伐鍗�
+                    sql = string.Format(@"/*dialect*/select FEntryID,FHQTY from Sc_WorkBillSortBillSub
+where FID='{0}' and isnull(FCOMPLETE,'鏈綈濂�')='鏈綈濂�'", current["FDayPlanWorkID"].ToString());
+                    DataTable dayPlanDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+                    var count = ReserveCount;
+                    List<string> sqlList = new List<string>();
+                    if (dayPlanDt.Rows.Count > 0)
+                    {
+                        foreach (DataRow dr in dayPlanDt.Rows)
+                        {
+                            if (count > 0)
+                            {
+                                sql = string.Format("/*dialect*/ update Sc_WorkBillSortBillSub set FReservedCount = {0} where FEntryID = {1}", count >= Convert.ToDecimal(dr["FHQTY"]) ? Convert.ToDecimal(dr["FHQTY"]) : count, dr["FEntryID"].ToString());
+                                sqlList.Add(sql);
+                                count = count - Convert.ToDecimal(dr["FHQTY"]);
+                            }
+                            else
+                                break;
+                        }
+                        DBServiceHelper.ExecuteBatch(Context, sqlList);
+                    }
+                    sql = string.Format(@"/*dialect*/
+--鐢熶骇鐢ㄦ枡娓呭崟鍒楄〃
+SELECT T1.FID,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty,FPRDORGID FStockOrgId,
+T2.FMATERIALID FMATERIALID2,T4.FNumber,T2.FNeedQty,convert(decimal(18,2),FNeedQty/T1.FQty ) as dwyl,
+t5.FBASEUNITID,t6.FSTOREUNITID,t7.FID FSTKID,t7.FOwnerID,t7.FOwnerTypeID,t7.FSTOCKID,t7.FBASEQTY
+--,isnull(t3.FBASEQTY,0)FBASEQTY
+ FROM T_PRD_PPBOM T1
+LEFT JOIN (select FID,MAX(FENTRYID)FENTRYID,SUM(FNeedQty)FNeedQty,FMATERIALID  from T_PRD_PPBOMENTRY   where FMoId='{0}'
+group by FMATERIALID,FID ) T2 on T1.FID=t2.FID
+--LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID
+LEFT JOIN T_BD_MATERIAL T4 on T2.FMATERIALID=T4.FMATERIALID
+join t_BD_MaterialBase t5 on t4.FMATERIALID = t5.FMATERIALID
+join t_BD_MaterialStock t6 on t4.FMATERIALID = t6.FMATERIALID
+join T_STK_INVENTORY t7 on t4.FMATERIALID = t7.FMATERIALID and t1.FPRDORGID=t7.FSTOCKORGID
+where t1.FMoId='{0}'    and T1.FMaterialID='{1}'
+", current["FHMainSourceInterID"].ToString(), current["FMatrailId_Id"].ToString());
+                    DataTable skDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+                    //閿佸簱
+                    List<LockStockArgs> list = new List<LockStockArgs>();
+                    foreach (DataRow dr in skDt.Rows)
+                    {
+                        LockStockArgs lockStockArgs = new LockStockArgs();
+                        lockStockArgs.ObjectId = "SAL_SaleOrder";
+                        lockStockArgs.BillId = Convert.ToString(current["FHMainSourceInterID"]); //鐢熶骇璁㈠崟ID
+                        lockStockArgs.BillNo = Convert.ToString(current["FSCOrderNo"]);//鐢熶骇璁㈠崟鍙�
+                        lockStockArgs.FID = Convert.ToInt32(current["FHMainSourceInterID"]); //鐢熶骇璁㈠崟ID
+                        lockStockArgs.BaseQty = decimal.Parse(dr["FBASEQTY"].ToString());//鍩烘湰鍗曚綅鏁伴噺
+                        lockStockArgs.BaseUnitID = int.Parse(dr["FBASEUNITID"].ToString());//鍩烘湰鍗曚綅
+                        lockStockArgs.BillDetailID = Convert.ToString(current["FHMainSourceEntryID"]);
+                        lockStockArgs.FEntryID = Convert.ToInt32(current["FHMainSourceEntryID"]); ;
+                        //lockStockArgs.Lot = Convert.ToString(current["FBatch"]); ;//鎵规 FBatch
+                        lockStockArgs.MaterialID = long.Parse(dr["FMATERIALID2"].ToString());
+                        lockStockArgs.OwnerID = long.Parse(dr["FOwnerID"].ToString());
+                        lockStockArgs.OwnerTypeID = dr["FOwnerTypeID"].ToString();
+                        lockStockArgs.Qty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount;//鏁伴噺
+                        lockStockArgs.STOCKID = long.Parse(dr["FSTOCKID"].ToString());//浠撳簱
+                        lockStockArgs.StockOrgID = long.Parse(dr["FStockOrgId"].ToString());//搴撳瓨缁勭粐
+                        lockStockArgs.UnitID = long.Parse(dr["FSTOREUNITID"].ToString());//鍗曚綅
+                        lockStockArgs.LockBaseQty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount;
+                        lockStockArgs.LockQty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount;//鍩烘湰鍗曚綅鏁伴噺
+                        lockStockArgs.FInvDetailID = Convert.ToString(dr["FSTKID"].ToString());
+                        list.Add(lockStockArgs);
+                    }
+                    var sa = StockServiceHelper.SaveLockInfo(Context, list, "Inv", false);
+                    this.View.ShowMessage("鎿嶄綔鎴愬姛锛�");
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error(ex.Message.ToString());
+                this.View.ShowErrMessage(ex.Message.ToString());
+            }
+        }
+        /// <summary>
+        /// 閲婃斁
+        /// </summary>  
+        public void Release()
+        {
+            try
+            {
+                //鑾峰彇鍗曟嵁浣撲俊鎭�
+                Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");
+                //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎
+                DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
+                DynamicObjectCollection filterResult = entityDataObjoct.Clone();
+                filterResult.Clear();
+                entityDataObjoct.Where(x => Convert.ToBoolean(x["FFOCUS"])).ToList().ForEach(x=> filterResult.Add(x));
+                foreach (DynamicObject current in entityDataObjoct)
+                {
+                    if (Convert.ToString(current["FFOCUS"]) == "False")
+                        continue;
+                    string sql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set FReservedCount = 0 where FID='{0}'", current["FDayPlanWorkID"].ToString());
+                    DBServiceHelper.Execute(Context, sql);
+                }
+                this.View.ShowMessage("鎿嶄綔鎴愬姛锛�");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error(ex.Message.ToString());
+                this.View.ShowErrMessage(ex.Message.ToString());
+            }
         }
     }
 }
 
 
+//tbReleaseReserve
\ No newline at end of file

--
Gitblit v1.9.1