Files
GateDge2023_ljy/07.珠海英搏尔/Enpower/PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql
PastSaid 912bea60ac 1
2024-03-28 11:30:14 +08:00

148 lines
6.7 KiB
Transact-SQL

IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_PLAN_BY_PAGE')
DROP PROCEDURE dbo.PROC_UPDATE_PLAN_BY_PAGE;
GO
CREATE PROCEDURE PROC_UPDATE_PLAN_BY_PAGE
@ListCount int output
AS
BEGIN
SET NOCOUNT ON;
SET @ListCount = 0;
SELECT
TOP 5000
A.FID
,A.FBILLNO AS '셕뺍땐데데뵀'
,A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as '셕뺍땐데饋簡땐데契뵀'
,A.F_SOURCE_ORDER_NUMBER as '셕뺍땐데饋簡땐데데뵀'
,A.F_FORECASTNUMBER as '셕뺍땐데渡꿎데데뵀'
,A.F_Linenumber as '셕뺍땐데渡꿎데契뵀'
,E.FBILLNO AS '渡꿎데데뵀'
,D.FSEQ,D.F_SOURCE_ORDER_NUMBER as '渡꿎데饋簡땐데데뵀'
,D.F_SOURCE_ORDER_LINE_NUMBER as '渡꿎데饋簡땐데契뵀'
INTO #TEMP1
FROM T_PLN_PLANORDER A
INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO
INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID
INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID = C.FSRCENTRYID
INNER JOIN T_PLN_FORECAST E ON E .FID=D.FID
WHERE A.F_FORECASTNUMBER = ''
--AND A.FBILLNO = @FBILLNO
--AND A.FBILLNO = 'MRP00260726'
SELECT FID
INTO #BillNoSet
FROM #TEMP1
GROUP BY FID
CREATE INDEX [#BillNoSet_INDEX_FID] ON #BillNoSet(FID);
SELECT @ListCount = count(1) FROM #BillNoSet
--SELECT @ListCount
IF(@ListCount > 0)
BEGIN
SELECT
--셕뺍땐데데뵀
t.FID
,渡꿎데데뵀
,'渡꿎데契뵀'=ISNULL(stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where 셕뺍땐데데뵀=t.셕뺍땐데데뵀 and 渡꿎데데뵀 = t.渡꿎데데뵀 for xml path('')),1,1,''),'')
,'饋簡땐데데뵀'=ISNULL(stuff((select distinct ','+CONVERT(nvarchar(100), 渡꿎데饋簡땐데데뵀) from #TEMP1 where 渡꿎데饋簡땐데데뵀<>'' and 셕뺍땐데데뵀=t.셕뺍땐데데뵀 and 渡꿎데데뵀 =t.渡꿎데데뵀 for xml path('')),1,1,''),'')
,'饋簡땐데契뵀'=ISNULL(stuff((select distinct ','+CONVERT(nvarchar(100), 渡꿎데饋簡땐데契뵀) from #TEMP1 where 渡꿎데饋簡땐데契뵀<>'' and 셕뺍땐데데뵀=t.셕뺍땐데데뵀 and 渡꿎데데뵀 =t.渡꿎데데뵀 for xml path('')),1,1,''),'')
INTO #TEMP3
FROM #TEMP1 t
WHERE t.渡꿎데데뵀 = ''
GROUP BY t.FID,t.渡꿎데데뵀
UPDATE T_PLN_PLANORDER
SET F_FORECASTNUMBER = B.渡꿎데데뵀
,F_Linenumber = B.渡꿎데契뵀
,F_SOURCE_ORDER_LINE_NUMBER = b.饋簡땐데契뵀
,F_SOURCE_ORDER_NUMBER = b.饋簡땐데데뵀
FROM
T_PLN_PLANORDER A
INNER JOIN #BillNoSet tt ON tt.FID = A.FID
INNER JOIN #TEMP3 B ON A.FID=B.FID
--inner join #temp2 f on f.fname = a.FBILLNO
--DROP TABLE #TEMP1
DROP TABLE #temp3
UPDATE A SET
A.F_CUSTOMERNAME = D.FCUSTID
,A.F_MATERIALCODE = D.FMATERIALID
from
T_PLN_PLANORDER A
INNER JOIN #BillNoSet tt ON tt.FID = A.FID
INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO
INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID
INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID
INNER JOIN T_PLN_FORECAST e on e.fid=d.FID
--inner join #temp2 f on f.fname = a.FBILLNO
--where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 )
--AND A.FBILLNO = @FBILLNO
UPDATE A
SET F_CUSTOMERNAME = D.FCUSTID
,F_MATERIALCODE = D.FMATERIALID
,F_FORECASTNUMBER = C.FBILLNO
,F_LINENUMBER = D.FSEQ
,F_SOURCE_ORDER_LINE_NUMBER = D.F_SOURCE_ORDER_LINE_NUMBER
,F_SOURCE_ORDER_NUMBER = D.F_SOURCE_ORDER_NUMBER
FROM
T_PLN_PLANORDER A
INNER JOIN #BillNoSet tt ON tt.FID = A.FID
INNER JOIN T_PLN_PLANORDER_B B ON A.FID=B.FID
INNER JOIN T_PLN_FORECAST C ON C .FBILLNO = B.FSALEORDERNO
INNER JOIN T_PLN_FORECASTENTRY D ON D .FID= C.FID AND D.FSEQ=B.FSALEORDERENTRYSEQ
--INNER JOIN #temp2 e ON A.FBILLNO = e.Fname
--WHERE A.FBILLNO = 'MRP00640407'
--UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'')
--from T_PLN_PLANORDER A
--INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER
--INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID
--INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber
--where ( a.F_Remark='' )
UPDATE E SET F_DESCRIPTION = ISNULL(C.FDESCRIPTION ,'' )
from T_PLN_PLANORDER A
INNER JOIN #BillNoSet tt ON tt.FID = A.FID
INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID
INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER
INNER JOIN T_PLN_FORECAST_L C ON C.FID = B.FID
--inner join #temp2 f on f.fname = a.FBILLNO
--where ( e.F_DESCRIPTION='' )
--AND A.FBILLNO = @FBILLNO
UPDATE T_PLN_PLANORDER
SET F_REMARK = ISNULL( DBO.GETFORECAST(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'')
FROM T_PLN_PLANORDER A
INNER JOIN #BillNoSet tt ON tt.FID = A.FID
--inner join #temp2 f on f.fname = a.FBILLNO
WHERE 1=1
--and ( a.F_Remark='' )
--AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = CONVERT(nvarchar(100),GETDATE(),23)
AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = CONVERT(nvarchar(100),'2024-01-17',23)
--AND A.FBILLNO = @FBILLNO
--UPDATE T_PLN_PLANORDER SET F_WAUG_LAYER =
--CASE WHEN B.꿔鑒 IS NULL THEN 땐데뵀 ELSE CONCAT(땐데뵀,'-',꿔鑒) END
-- from T_PLN_PLANORDER A
-- inner join
--(
--select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '꿔鑒', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER,
--A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '땐데뵀' from T_PLN_PLANORDER A
--INNER JOIN T_PLN_PLANORDER B ON A.F_FORECASTNUMBER=B.F_FORECASTNUMBER AND A.F_LINENUMBER=B.F_LINENUMBER AND A.F_MATERIALCODE =B.FMATERIALID
--INNER JOIN #temp2 C ON C.Fname=A.FBILLNO
----WHERE a.F_WAUG_LAYER = ''
--) B ON A.FID = B.FID
--DROP TABLE #temp2
END
DROP TABLE #TEMP1
DROP TABLE #BillNoSet
SET NOCOUNT OFF
END