Files
GateDge2023_ljy/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql
2024-01-02 10:44:59 +08:00

131 lines
5.4 KiB
Transact-SQL

DECLARE @STARTDATE DATE,@ENDDATE DATE,@LCID INT,@YEAR INT,@MONTH INT,@DAY INT
SET @STARTDATE ='2023-12-01'
SET @ENDDATE ='2023-12-31'
SET @LCID = 2052
SET @YEAR = 2023
SET @MONTH = 12
SET @DAY = 20
--获取定时计划的参数值
SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = '657bf589f52174'
SELECT
ROW_NUMBER() OVER(ORDER BY t0.FMATERIALID) AS FIDENTITYID
,t0.FMATERIALID
,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 'D' 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'
,CONCAT(t2.FLotSize,t5_L.FNAME, '/批') AS StandardLot
,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --安全库存
,t2S.FSTOREUNITID --库存单位
,t5_L.FNAME AS FSTOREUNITNAME
,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT
,t4.FLOTYIELD -- '每批产量'
,t4.FPACKUNITCONVERRATIO -- '包装规格'
,t4.FPACKUNITID -- '单位'
,t6_L.FNAME AS FPACKUNITNAME
,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01
,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01
,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02
,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03
,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty --在生产数量
,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty --已入库数量
,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --合计入库量
,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --计划生产批数
,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --确认生产批数
,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --确认生产数量
,t0.countM
FROM
(SELECT
t0E.FMATERIALID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
,sum(t1.FFINISHQTY) AS FFINISHQTY
,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
,sum(M01) AS M01
,sum(S01) AS S01
,sum(S02) AS S02
,sum(S03) AS S03
,count(1) AS countM
FROM
T_PLN_FORECAST t0
LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN (
SELECT
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
,sum(t2.FFINISHQTY) AS FFINISHQTY
,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
FROM
T_PLN_PLANORDER t1
LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID
LEFT JOIN (
SELECT
t0E.FMATERIALID
,t0E_LK.FSID
,SUM(t1.FFINISHQTY) AS FFINISHQTY --已入库数量
,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --合格品入库选单数量
FROM
T_PRD_MO t0
LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN T_PRD_MOENTRY_LK t0E_LK ON t0E_LK.FENTRYID = t0E.FENTRYID AND t0E_LK.FSTABLENAME = 'T_PLN_PLANORDER'
LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID
LEFT JOIN (
SELECT
t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 入库汇报 e52b554423704173b7306554708a8b05 生产汇报
,t0E.FMOENTRYID
,t0E.FFINISHQTY
,t0E_A.FSTOCKINQUASELQTY
FROM
T_PRD_MORPT t0
LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID
LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
) t1 ON t1.FMOENTRYID = t0E.FENTRYID
WHERE
t0E.FSRCBILLTYPE ='PLN_PLANORDER'
AND t0E_A.FREQSRC = 2
AND t0E_A.FSTATUS <> 6
AND t0E.FSALEORDERENTRYID <> 0
GROUP BY
t0E.FMATERIALID
,t0E_LK.FSID
) t2 ON t2.FSID = t1.FID AND t2.FMATERIALID = t1.FMATERIALID
WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2
GROUP BY
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ)
WHERE
t0.FDATE BETWEEN @STARTDATE AND @ENDDATE
GROUP BY
t0E.FMATERIALID
) t0
LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY)
LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID)