This commit is contained in:
梁骏愉
2025-03-15 15:03:34 +08:00
parent 17bb7e4131
commit 2306c8b7cf
69 changed files with 4199 additions and 324 deletions

View File

@@ -26,12 +26,13 @@ namespace GZ.LJY000.Enpower.POSH_N3_Forecast.BillConvertPlugInEx
{
var sqlL = $@"/*dialect*/
WITH #年度预测 AS (
;WITH #N3预测 AS (
SELECT t1.FBILLNO,t1.FID,t1.FEntryID,t1.FSEQ,t1.FMATERIALID,t1.FUNITID,t1.FCUSTID
,t1.FQTY,t1.FYEAR '年份' ,t1.FMONTH '月份'
,t1.FYEAR * 100 + REPLACE(T1.DATEM,'FN','') + t1.FMONTH 周期
,CONVERT(int,t1.FYEAR * 10000 + REPLACE(T1.DATEM,'FN','') *100 + t1.FMONTH * 100 + 1) AS '日期'
,CONVERT(datetime,DATEFROMPARTS(t1.FYEAR,CONVERT(int,REPLACE(T1.DATEM,'FN',''))+ t1.FMONTH,1)) 'startDate'
,t1.FYEAR
FROM (
SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSEQ,t0e.FYEAR,t0e.FMONTH,t0e.FMATERIALID,t0e.FUNITID,t0e.FCUSTID,t0e.FN0,t0e.FN1,t0e.FN2,t0e.FN3
FROM T_PLN_FORECAST2N3 t0 --表头
@@ -45,7 +46,9 @@ WITH #年度预测 AS (
SELECT tt.*
,DATEADD(SECOND,-1,DATEADD(MONTH, 1, tt.startDate)) AS 'endDate'
,CASE WHEN ISNULL(t0.FQTY,0) > tt.FQTY THEN 0 ELSE tt.FQTY - ISNULL(t0.FQTY,0) END '最终数量'
FROM #年度预测 tt
,tt.FQTY 'F_OriginalQty',t0.FQTY 'W5Qty'
INTO #table1
FROM #N3预测 tt
OUTER APPLY (
SELECT t1.FMATERIALID,SUM(t1.FQTY) FQTY
FROM (
@@ -64,7 +67,38 @@ FROM #年度预测 tt
GROUP BY t1.FMATERIALID,t1.FCUSTID--,t1.FYEAR * 100 + DATEPART(MONTH,(DATEADD(DAY,CONVERT(int,REPLACE(T1.DATEM,'FD','')) - 1,t1.FSTARTDATE)))
) t0
ORDER BY tt.startDate,tt.FSEQ
declare @startDate date,@endDate date
SELECT @startDate = MIN(t0.startDate),@endDate = MAX(t0.endDate)
FROM #table1 t0
;WITH #发货通知单 AS (
SELECT t0.FBILLNO,t0.FDATE,t0.FCUSTOMERID,t0e.FMATERIALID,t0e.FQTY,t0e.F_PNDR_BASEQTY3 '2次调拨'
FROM T_SAL_DELIVERYNOTICE t0
INNER JOIN T_SAL_DELIVERYNOTICEENTRY t0e on t0.FID = t0e.FID
WHERE t0.FDOCUMENTSTATUS = 'C'
AND t0.FDATE between @startDate AND @endDate
)
,#最终数据 AS (
SELECT t0.FBILLNO,t0.FID,t0.FEntryID,t0.FMATERIALID,t0.FUNITID,t0.FYEAR,t0.FCUSTID,t0.startDate,t0.endDate,t0.FSEQ,ISNULL(t1.FQTY,0) 'F_DelivQty',ISNULL(t1.[2次调拨],0) 'F_Direct2Qty'
,t0.F_OriginalQty,t0.W5Qty
,CASE WHEN t0.最终数量 < (ISNULL(t1.FQTY,0) + ISNULL(t1.[2次调拨],0)) THEN 0 ELSE t0.最终数量 - (ISNULL(t1.FQTY,0) + ISNULL(t1.[2次调拨],0)) END AS '最终数量'
,t0.年份,t0.周期 - (t0.年份 * 100) 月份
FROM #table1 t0
OUTER APPLY (
SELECT SUM(t1.FQTY) FQTY ,SUM(t1.[2次调拨]) [2次调拨]
FROM #发货通知单 t1
WHERE 1 = 1 AND t1.FMATERIALID = t0.FMATERIALID
AND t0.FCUSTID = t1.FCUSTOMERID
AND t1.FDATE BETWEEN t0.startDate AND t0.endDate
) t1
)
SELECT t0.*
FROM #最终数据 t0
WHERE t0.最终数量 > 0
ORDER BY t0.startDate,t0.FSEQ
DROP TABLE #table1
";
//throw new Exception(sqlL);
var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
@@ -108,19 +142,15 @@ ORDER BY tt.startDate,tt.FSEQ
var baseUnitId_Id = MaterialBase["BaseUnitId_Id"].Long2Int();
var qty = decimal.Parse(item["最终数量"].ToString());
entity["Qty"] = qty;
entity["F_DelivQty"] = decimal.Parse(item["F_DelivQty"].ToString());
entity["F_Direct2Qty"] = decimal.Parse(item["F_Direct2Qty"].ToString());
entity["F_OriginalQty"] = decimal.Parse(item["F_OriginalQty"].ToString());
entity["F_W5Qty"] = decimal.Parse(item["W5Qty"].ToString());
entity["StartDate"] = item["startDate"];
entity["EndDate"] = item["endDate"];
////# 货主类型
//entity["FOwnerTypeId"] = item["FOWNERTYPEID"];
////# 货主
//var ownerId = item["FOWNERID"].Long2Int();
//if (ownerId > 0)
//{
// var ownerObj = BusinessDataServiceHelper.LoadSingle(this.Context, ownerId, ownerFId.RefFormDynamicObjectType);
// entity["FOwnerId_Id"] = ownerId;
// entity["FOwnerId"] = ownerObj;
//}
entity["F_Year"] = item["年份"];
entity["F_Month"] = item["月份"];
entity["FCloseStatus"] = "A";
var custId = item["FCUSTID"].Long2Int();
if (custId > 0)