IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP') DROP PROCEDURE dbo.PROC_INQUIRPLMTMPRTP; GO CREATE PROCEDURE PROC_INQUIRPLMTMPRTP @TableName varchar(100) ,@STARTDATE date ,@ENDDATE date ,@LCID int ,@SeqFld varchar(200) AS BEGIN --生产订单-汇报单start SELECT t0E.FSRCBILLNO ,t0E.FMATERIALID ,t0E.FSALEORDERENTRYID ,t0E.FSALEORDERENTRYSEQ ,SUM(t0E.FQTY) AS FQTY ,SUM(t1.FFINISHQTY) AS FFINISHQTY --已入库数量 into #TMP_MO_INFO FROM T_PRD_MO t0 LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID LEFT JOIN (SELECT t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 入库汇报 e52b554423704173b7306554708a8b05 生产汇报 ,t0E.FMOENTRYID ,FFINISHQTY FROM T_PRD_MORPT t0 LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID WHERE t0.FDOCUMENTSTATUS='C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' ) t1 on t1.FMOENTRYID = t0E.FENTRYID WHERE t0E.FSRCBILLTYPE ='PLN_PLANORDER' AND t0E_A.FSTATUS <> 6 AND t0E.FSALEORDERENTRYID <> 0 AND t0.FDATE between @STARTDATE and @ENDDATE GROUP BY t0E.FSRCBILLNO ,t0E.FMATERIALID ,t0E.FSALEORDERENTRYID ,t0E.FSALEORDERENTRYSEQ --生产订单-汇报单end --计划订单start SELECT t0.FID ,t0.FBILLNO ,t0.FMATERIALID ,t0_B.FSALEORDERENTRYID ,SUM(t0.FFirmQty) as 'FFirmQty' ,SUM(t0.FORDERQTY) as 'FOrderQty' into #TMP_PLN_INFO FROM T_PLN_PLANORDER t0 LEFT JOIN T_PLN_PLANORDER_B t0_B ON t0.FID = t0_B.FID WHERE t0.FRELEASETYPE = 1 --AND (t0.FRELEASESTATUS = 1 OR t0.FRELEASESTATUS = 2 ) GROUP By t0.FID ,t0.FBILLNO ,t0.FRELEASETYPE ,t0.FMATERIALID ,t0_B.FSALEORDERENTRYID --计划订单end --查询结果汇总start SELECT t0.FID ,t0.FBILLNO ,t0E.FMATERIALID ,t0E.FENTRYID ,t2.FNUMBER ,t2_L.FNAME ,t2_L.FSPECIFICATION ,(CASE t2S.FEXPPERIOD WHEN 0 THEN '' ELSE CASE t2S.FEXPUNIT WHEN 'Y' THEN CONVERT ( VARCHAR,CAST((t2S.FEXPPERIOD * 12) AS INT) ) + '个月' WHEN 'M' THEN CONVERT ( VARCHAR,CAST(t2S.FEXPPERIOD AS INT) ) + '个月' WHEN 't3' THEN CONVERT ( VARCHAR, CAST(( CASE t2S.FEXPPERIOD % 30 WHEN 0 THEN t2S.FEXPPERIOD / 30 ELSE t2S.FEXPPERIOD / 365 * 12 END ) AS INT)) + '个月' ELSE '' END END) AS 'SHELFLIFE' ,t2.FLotSize AS StandardLot ,t2S.FSAFESTOCK AS SAFESTOCK --安全库存 ,t2S.FSTOREUNITID --库存单位 ,(dbo.PackageValConver(t2S.FSAFESTOCK, t2P.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT ,t2P.FLOTYIELD -- '每批产量' ,t2P.FPACKUNITCONVERRATIO -- '包装规格' ,t2P.FPACKUNITID -- '单位' ,dbo.PackageValConver(t0E.M01,t2P.FPACKUNITCONVERRATIO) as M01 ,dbo.PackageValConver(t0E.S01,t2P.FPACKUNITCONVERRATIO) as S01 ,dbo.PackageValConver(t0E.S02,t2P.FPACKUNITCONVERRATIO) as S02 ,dbo.PackageValConver(t0E.S03,t2P.FPACKUNITCONVERRATIO) as S03 ,dbo.PackageValConver((ISNULL(t3.FQTY,0) - ISNULL(t3.FFINISHQTY,0)),t2P.FPACKUNITCONVERRATIO) AS InProductionQty --在生产数量 ,dbo.PackageValConver(ISNULL(t4.FQTY,0),t2P.FPACKUNITCONVERRATIO) AS InStockQty --已入库数量 ,dbo.PackageValConver((ISNULL(t3.FQTY,0) + ISNULL(t4.FQTY,0)),t2P.FPACKUNITCONVERRATIO) AS TotalStockQty --合计入库量 ,dbo.PackageValConver(t1.FOrderQty,t2P.FPACKUNITCONVERRATIO) AS OrderLotQty --计划生产批数 ,t1.FFirmQty ,t1.FOrderQty into #TMPMPS FROM T_PLN_FORECAST t0 LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID LEFT JOIN #TMP_PLN_INFO t1 ON t1.FSALEORDERENTRYID = t0E.FENTRYID AND t1.FMATERIALID = t0E.FMATERIALID LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0E.FMATERIALID LEFT JOIN T_BD_MATERIAL_L t2_L ON t2_L.FMATERIALID = t0E.FMATERIALID LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0E.FMATERIALID LEFT JOIN T_BD_MATERIALPRODUCE t2P ON t2P.FMATERIALID = t0E.FMATERIALID LEFT JOIN #TMP_MO_INFO t3 on t3.FSRCBILLNO = t1.FBILLNO AND t3.FSALEORDERENTRYID = t0E.FENTRYID AND t3.FSALEORDERENTRYSEQ = t0E.FSEQ LEFT JOIN (SELECT t0.FMATERIALID ,t0.FSTOCKORGID ,SUM(t1.FQTY) AS FQTY FROM T_STK_INVENTORY t0 LEFT JOIN T_STK_INVINITDETAIL t1 ON t0.FMATERIALID = t1.FMATERIALID AND t0.FSTOCKID = t1.FSTOCKID GROUP BY t0.FMATERIALID,t0.FSTOCKORGID ) t4 on t4.FMATERIALID = t0E.FMATERIALID WHERE --t0.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' t0.FDATE BETWEEN @STARTDATE AND @ENDDATE --更新单位 ALTER TABLE #TMPMPS ADD FSTOREUNITNAME VARCHAR(50) UPDATE #TMPMPS SET #TMPMPS.FSTOREUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FSTOREUNITID ALTER TABLE #TMPMPS ADD FPACKUNITNAME VARCHAR(50) UPDATE #TMPMPS SET #TMPMPS.FPACKUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FPACKUNITID ALTER TABLE #TMPMPS ADD FPACKUNITCONVT VARCHAR(100) UPDATE T SET T.FPACKUNITCONVT = CONCAT(CONVERT(VARCHAR,T.FPACKUNITCONVERRATIO),T.FSTOREUNITNAME,'/',T.FPACKUNITNAME) FROM #TMPMPS T --ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6) --UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T --查询结果汇总end DECLARE @SQL VARCHAR(2000) SET @sql = N' select t0.* ,'+@SeqFld+' into '+ @TableName +' From #TMPMPS t0 ' EXECUTE(@sql) DROP TABLE #TMPMPS DROP TABLE #TMP_PLN_INFO DROP TABLE #TMP_MO_INFO END