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.TimedTaskPlugIn/PRD/StockChangeDynamicAlignment.cs | 5 +
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs | 215 +++++++++++++++++++++++++++++++++++++++++++++++++----
2 files changed, 201 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
diff --git a/src/BLL/Demo.TimedTaskPlugIn/PRD/StockChangeDynamicAlignment.cs b/src/BLL/Demo.TimedTaskPlugIn/PRD/StockChangeDynamicAlignment.cs
index 68621b2..9d7cc86 100644
--- a/src/BLL/Demo.TimedTaskPlugIn/PRD/StockChangeDynamicAlignment.cs
+++ b/src/BLL/Demo.TimedTaskPlugIn/PRD/StockChangeDynamicAlignment.cs
@@ -15,6 +15,9 @@
using System.Diagnostics;
using System.Collections.Generic;
using ZD.Share.Common;
+using Kingdee.K3.Core.SCM.STK;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.K3.SCM.ServiceHelper;
namespace Demo.TimedTaskPlugIn.PRD
{
@@ -766,5 +769,7 @@
}
DBServiceHelper.ExecuteBatch(Context, sqlList);
}
+
+
}
}
--
Gitblit v1.9.1