219 lines
6.6 KiB
MySQL
219 lines
6.6 KiB
MySQL
|
|
CREATE TABLE #TMP_MO --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>#TMP
|
|||
|
|
(
|
|||
|
|
FID INT
|
|||
|
|
,FBILLNO VARCHAR(255)
|
|||
|
|
,FDATE DATE
|
|||
|
|
,FENTRYID INT
|
|||
|
|
,FMATERIALID INT
|
|||
|
|
,OMATERAILID int
|
|||
|
|
,MOBOMID INT
|
|||
|
|
,FSRCFORMID VARCHAR(255)
|
|||
|
|
,FSRCBILLNO VARCHAR(255)
|
|||
|
|
,FSRCINTERID INT
|
|||
|
|
,FSRCENTRYID INT
|
|||
|
|
,FSEQ INT
|
|||
|
|
,FBOMID INT
|
|||
|
|
,BOMLEVEL VARCHAR(255)
|
|||
|
|
,TOPBILLNO VARCHAR(255)
|
|||
|
|
,FFORECASTGROUP varchar(255)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID);
|
|||
|
|
|
|||
|
|
--INSERT INTO #TMP_MO
|
|||
|
|
/*<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ͷ<EFBFBD>ţ<EFBFBD>T_PLN_RESERVELINKENTRY<EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
SELECT
|
|||
|
|
t0e.FID
|
|||
|
|
,t0.FBILLNO
|
|||
|
|
,t0.FDATE
|
|||
|
|
,t0e.FENTRYID
|
|||
|
|
,t0e.FMATERIALID
|
|||
|
|
,t0e.FBomId MOBomId
|
|||
|
|
,t1.FSRCFORMID --'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t1.FSRCBILLNO --'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t1.FSRCINTERID /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
,t1.FSRCENTRYID /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>*/ ---<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ͬһԤ<EFBFBD>ⵥͬһ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ
|
|||
|
|
,t2e.FSEQ
|
|||
|
|
,t2e.FBomId /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD>ⶩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FBomIdȡƥ<EFBFBD><EFBFBD>BOM<EFBFBD>༶չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
,t2e.FMATERIALID OMATERAILID
|
|||
|
|
,t0e.FFORECASTGROUP
|
|||
|
|
,t0e.FFORECASTGROUPFRIST
|
|||
|
|
--,t0_lk.FSTABLENAME
|
|||
|
|
--,t0_lk.FSTABLEID
|
|||
|
|
--,t0_lk.FSBILLID
|
|||
|
|
,t0_lk.FSID
|
|||
|
|
,t0e_Q.FSRCSPLITID
|
|||
|
|
,'' BOMLevel
|
|||
|
|
INTO #TMP_MO_PART
|
|||
|
|
FROM T_PRD_MO t0 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
|
INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID
|
|||
|
|
INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID
|
|||
|
|
INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
|
INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥ<EFBFBD>ⵥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WHERE 1 = 1
|
|||
|
|
--t0.FBILLNO='WO2401100002' /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
AND t0e.FFORECASTGROUP = '' /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>*/
|
|||
|
|
--AND t0e.FFORECASTGROUPFRIST = 'WO2312270043'
|
|||
|
|
AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>MRP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶĵ<EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
AND t0e_Q.FSRCSPLITID = 0
|
|||
|
|
|
|||
|
|
|
|||
|
|
INSERT INTO #TMP_MO
|
|||
|
|
SELECT
|
|||
|
|
tt.FID
|
|||
|
|
,tt.FBILLNO
|
|||
|
|
,tt.FDATE
|
|||
|
|
,tt.FENTRYID
|
|||
|
|
,tt.FMATERIALID
|
|||
|
|
,tt.OMATERAILID
|
|||
|
|
,tt.MOBomId
|
|||
|
|
,tt.FSRCFORMID --'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,tt.FSRCBILLNO --'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,tt.FSRCINTERID /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
,tt.FSRCENTRYID /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>*/ ---<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ͬһԤ<EFBFBD>ⵥͬһ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ
|
|||
|
|
,tt.FSEQ
|
|||
|
|
,tt.FBomId /*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD>ⶩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FBomIdȡƥ<EFBFBD><EFBFBD>BOM<EFBFBD>༶չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
,tt.BOMLevel
|
|||
|
|
,ISNULL(t0.FBILLNO,'<EFBFBD><EFBFBD><EFBFBD><EFBFBD>') FBILLNO
|
|||
|
|
,tt.FFORECASTGROUP
|
|||
|
|
--into #TMP_MO
|
|||
|
|
FROM
|
|||
|
|
#TMP_MO_PART tt
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT
|
|||
|
|
FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID
|
|||
|
|
,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID
|
|||
|
|
FROM
|
|||
|
|
#TMP_MO_PART
|
|||
|
|
WHERE FMATERIALID = OMATERAILID
|
|||
|
|
) t0 ON 1=1
|
|||
|
|
AND tt.FBOMID = t0.FBOMID
|
|||
|
|
AND tt.FSEQ = t0.FSEQ
|
|||
|
|
AND tt.FSRCINTERID = t0.FSRCINTERID
|
|||
|
|
AND tt.FSRCENTRYID = t0.FSRCENTRYID
|
|||
|
|
AND tt.FDATE = t0.FDATE
|
|||
|
|
--AND t0.ROWID =1
|
|||
|
|
AND tt.OMATERAILID = t0.FMATERIALID
|
|||
|
|
AND t0.Billnolen = len(tt.FBILLNO)
|
|||
|
|
--AND tt.fsid = t0.FSID
|
|||
|
|
WHERE 1 = 1
|
|||
|
|
--AND tt.FFORECASTGROUP = ''
|
|||
|
|
|
|||
|
|
CREATE TABLE #TMP_TOP_BOM_SET(
|
|||
|
|
FID int
|
|||
|
|
,FNUMBER varchar(80)
|
|||
|
|
,FMATERIALID int
|
|||
|
|
,FSEQ int
|
|||
|
|
,BOMLEVEL int
|
|||
|
|
,TOPID int
|
|||
|
|
,showlevel varchar(80)
|
|||
|
|
,oId int
|
|||
|
|
)
|
|||
|
|
CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID);
|
|||
|
|
|
|||
|
|
INSERT INTO #TMP_TOP_BOM_SET
|
|||
|
|
SELECT
|
|||
|
|
t0.FID
|
|||
|
|
,t0.FNUMBER
|
|||
|
|
,t0.FMATERIALID
|
|||
|
|
,ROW_NUMBER() over(partition BY t0.FID order by t0.fid)
|
|||
|
|
,1 'BOMLEVEL'
|
|||
|
|
,t0.FID AS 'TOPID'
|
|||
|
|
,''
|
|||
|
|
,t0.FID
|
|||
|
|
FROM
|
|||
|
|
T_ENG_BOM t0
|
|||
|
|
INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID
|
|||
|
|
WHERE 1 = 1
|
|||
|
|
AND t3.FMATERIALID = t3.OMATERAILID
|
|||
|
|
GROUP BY
|
|||
|
|
t0.FID
|
|||
|
|
,t0.FNUMBER
|
|||
|
|
,t0.FMATERIALID
|
|||
|
|
|
|||
|
|
|
|||
|
|
DECLARE @num INT,@level int,@LoopCount int
|
|||
|
|
SET @num = 1
|
|||
|
|
SET @level =1
|
|||
|
|
SET @LoopCount = 0;
|
|||
|
|
WHILE (@num <> 0 AND @LoopCount < 30)
|
|||
|
|
BEGIN
|
|||
|
|
INSERT INTO #TMP_TOP_BOM_SET
|
|||
|
|
SELECT
|
|||
|
|
t3.FID
|
|||
|
|
,t3.FNUMBER
|
|||
|
|
,t3.FMATERIALID
|
|||
|
|
,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq)
|
|||
|
|
,t0.BOMLEVEL + 1
|
|||
|
|
,t0.TOPID
|
|||
|
|
,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR))
|
|||
|
|
,t0.FID
|
|||
|
|
FROM
|
|||
|
|
#TMP_TOP_BOM_SET t0
|
|||
|
|
INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID
|
|||
|
|
INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID
|
|||
|
|
INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID
|
|||
|
|
WHERE 1 = 1
|
|||
|
|
AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 )
|
|||
|
|
AND t0.BOMLEVEL = @level
|
|||
|
|
|
|||
|
|
SET @num = @@ROWCOUNT
|
|||
|
|
SET @level += 1
|
|||
|
|
SET @LoopCount += 1
|
|||
|
|
END
|
|||
|
|
|
|||
|
|
SELECT
|
|||
|
|
*
|
|||
|
|
INTO #TMP_TOP_BOM_GROUP
|
|||
|
|
FROM #TMP_TOP_BOM_SET
|
|||
|
|
WHERE 1 = 1
|
|||
|
|
GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId
|
|||
|
|
|
|||
|
|
SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP
|
|||
|
|
INTO #TMP_MO_GROUP
|
|||
|
|
FROM #TMP_MO
|
|||
|
|
GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP
|
|||
|
|
|
|||
|
|
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UPDATE t0 SET t0.BOMLEVEL = (CASE t0.TOPBILLNO WHEN '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' THEN '' ELSE ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') END)
|
|||
|
|
FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID
|
|||
|
|
|
|||
|
|
----<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
|
--UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO
|
|||
|
|
--FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID
|
|||
|
|
--WHERE t0e.FFORECASTGROUP = ''
|
|||
|
|
|
|||
|
|
--SELECT t0.*,t1.fnumber
|
|||
|
|
|
|||
|
|
--FROM #TMP_TOP_BOM_GROUP t0
|
|||
|
|
--INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid
|
|||
|
|
|
|||
|
|
----WHERE t0.TOPID = 8062230
|
|||
|
|
--order by t0.FSEQ,t0.BOMLEVEL
|
|||
|
|
--SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043'<27><>
|
|||
|
|
SELECT t0.*
|
|||
|
|
,t0_lk.FSTABLENAME
|
|||
|
|
,t0_lk.FSTABLEID
|
|||
|
|
,t0_lk.FSBILLID
|
|||
|
|
,t0_lk.FSID
|
|||
|
|
,t0e_Q.FSRCSPLITBILLNO
|
|||
|
|
,t0e_Q.FSRCSPLITID
|
|||
|
|
,t0e_Q.FSRCSPLITSEQ
|
|||
|
|
,t0e_Q.FSRCSPLITENTRYID
|
|||
|
|
--INTO #TMP_MO_PART
|
|||
|
|
FROM #TMP_MO_GROUP t0
|
|||
|
|
LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID
|
|||
|
|
INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID
|
|||
|
|
WHERE 1 = 1
|
|||
|
|
--AND FBOMID =8237478 AND MOBOMID =8237478
|
|||
|
|
--AND topbillno='WO2311080183'
|
|||
|
|
--SELECT * FROM #TMP_MO WHERE 1 = 1
|
|||
|
|
--AND FBOMID <> MOBOMID
|
|||
|
|
--AND FBOMID = 6339745 --AND topbillno='WO2308090009' --<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
DROP TABLE #TMP_MO_GROUP
|
|||
|
|
DROP TABLE #TMP_MO_PART
|
|||
|
|
DROP TABLE #TMP_TOP_BOM_SET
|
|||
|
|
DROP TABLE #TMP_TOP_BOM_GROUP
|
|||
|
|
DROP TABLE #TMP_MO --ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>#TMP
|