You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4815 lines
233 KiB
4815 lines
233 KiB
using Newtonsoft.Json.Linq;
|
|
using Newtonsoft.Json;
|
|
using NFine.Code;
|
|
using NFine.Data.Extensions;
|
|
using NFine.Domain._03_Entity.SRM;
|
|
using NFine.Repository;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data.Common;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using NFine.Application.Entity;
|
|
using NFine.Application.Models;
|
|
using NFine.Application.WMS;
|
|
using System.Web.UI.WebControls;
|
|
using System.Net.NetworkInformation;
|
|
using System.Collections;
|
|
using System.Xml;
|
|
using NFine.Domain._03_Entity.WMS;
|
|
|
|
namespace NFine.Application.KBSWMS
|
|
{
|
|
public class ICSInspectionReportsApp : RepositoryFactory<ICSVendor>
|
|
{
|
|
public static DataTable Invmes = new DataTable();
|
|
|
|
#region
|
|
/// <summary>
|
|
/// 月度一次检验合格率
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public string GetPassFirstTime(string queryJson)
|
|
{
|
|
try
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
List<PassFirstTimeModel> passFirstTimeModel = new List<PassFirstTimeModel>();
|
|
PassFirstTimeModel passFirstTimeModel1 = new PassFirstTimeModel();
|
|
PassFirstTimeModel passFirstTimeModel2 = new PassFirstTimeModel();
|
|
PassFirstTimeModel passFirstTimeModel3 = new PassFirstTimeModel();
|
|
|
|
//获取传递的年份和月份
|
|
int year = queryParam["DateNow"].ToString().Substring(0, 4).ToInt();
|
|
string date = queryParam["DateNow"].ToString();
|
|
var dates = date.ToDate();
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
var firstDayofYear = new DateTime(year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayofNextYear = new DateTime(year+1, 1, 1).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
#region fistNGsql 一次不良数量
|
|
string fistNGsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where ZZJG='NG' AND CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
) b where ZZJG='NG' AND CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(FistNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(FistNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.FistNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.FistNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(FistNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1 ";
|
|
#endregion
|
|
|
|
#region IncomingMterialssql 来料数量
|
|
string incomingMterialssql = $@"SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ1
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ2
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo WHERE CONVERT(DATE, a.FirstCheckTime) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
|
|
UNION ALL
|
|
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ1
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
WHERE CONVERT(DATE, a.FirstCheckTime) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
UNION ALL
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ2
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(FistNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(FistNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.FistNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.FistNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(FistNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1 DROP TABLE #tableMJ1 DROP TABLE #tableMJ2
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 复判ng sencondNgsql
|
|
string sencondNgsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(SecondNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(SecondNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.SecondNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.SecondNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(SecondNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 待判中 underReRudgmentsql
|
|
string underReRudgmentsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否' and CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(UnderReRudgment) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(UnderReRudgment) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.UnderReRudgment,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.UnderReRudgment,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(UnderReRudgment) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
#endregion
|
|
|
|
#endregion
|
|
var dt1 = SqlHelper.CmdExecuteDataTable(incomingMterialssql);
|
|
var dt2 = SqlHelper.CmdExecuteDataTable(fistNGsql);
|
|
var dt3 = SqlHelper.CmdExecuteDataTable(sencondNgsql);
|
|
var dt4 = SqlHelper.CmdExecuteDataTable(underReRudgmentsql);
|
|
passFirstTimeModel1.Decomposition1 = "TOTAL(一次检验合格率)";
|
|
passFirstTimeModel2.Decomposition1 = "不良率(对外改善)";
|
|
passFirstTimeModel3.Decomposition1 = "复判合格率(对内改善)";
|
|
passFirstTimeModel1.Decomposition2 = "";
|
|
passFirstTimeModel2.Decomposition2 = "";
|
|
passFirstTimeModel3.Decomposition2 = "";
|
|
var data = PassCount(new List<string> {
|
|
"Week1", "Week2", "Week3", "Week4", "Week5", "Week6",
|
|
"Month1",
|
|
"Month2",
|
|
"Month3",
|
|
"Month4",
|
|
"Month5",
|
|
"Month6",
|
|
"Month7",
|
|
"Month8",
|
|
"Month9",
|
|
"Month10",
|
|
"Month11",
|
|
"Month12","MonthlyCumulative","AnnualAccumulation"},
|
|
dt1, dt2, dt3, dt4);
|
|
|
|
|
|
#region 周数据
|
|
|
|
passFirstTimeModel1.Week1 = data["Week1"].V1;
|
|
passFirstTimeModel3.Week1 = data["Week1"].V2;
|
|
passFirstTimeModel2.Week1 = data["Week1"].V3;
|
|
|
|
passFirstTimeModel1.Week2 = data["Week2"].V1;
|
|
passFirstTimeModel3.Week2 = data["Week2"].V2;
|
|
passFirstTimeModel2.Week2 = data["Week2"].V3;
|
|
|
|
passFirstTimeModel1.Week3 = data["Week3"].V1;
|
|
passFirstTimeModel3.Week3 = data["Week3"].V2;
|
|
passFirstTimeModel2.Week3 = data["Week3"].V3;
|
|
|
|
passFirstTimeModel1.Week4 = data["Week4"].V1;
|
|
passFirstTimeModel3.Week4 = data["Week4"].V2;
|
|
passFirstTimeModel2.Week4 = data["Week4"].V3;
|
|
|
|
passFirstTimeModel1.Week5 = data["Week5"].V1;
|
|
passFirstTimeModel3.Week5 = data["Week5"].V2;
|
|
passFirstTimeModel2.Week5 = data["Week5"].V3;
|
|
|
|
passFirstTimeModel1.Week6 = data["Week6"].V1;
|
|
passFirstTimeModel3.Week6 = data["Week6"].V2;
|
|
passFirstTimeModel2.Week6 = data["Week6"].V3;
|
|
#endregion
|
|
|
|
#region 月数据
|
|
passFirstTimeModel1.Month1 = data["Month1"].V1;
|
|
passFirstTimeModel3.Month1 = data["Month1"].V2;
|
|
passFirstTimeModel2.Month1 = data["Month1"].V3;
|
|
|
|
passFirstTimeModel1.Month2 = data["Month2"].V1;
|
|
passFirstTimeModel3.Month2 = data["Month2"].V2;
|
|
passFirstTimeModel2.Month2 = data["Month2"].V3;
|
|
|
|
passFirstTimeModel1.Month3 = data["Month3"].V1;
|
|
passFirstTimeModel3.Month3 = data["Month3"].V2;
|
|
passFirstTimeModel2.Month3 = data["Month3"].V3;
|
|
|
|
passFirstTimeModel1.Month4 = data["Month4"].V1;
|
|
passFirstTimeModel3.Month4 = data["Month4"].V2;
|
|
passFirstTimeModel2.Month4 = data["Month4"].V3;
|
|
|
|
passFirstTimeModel1.Month5 = data["Month5"].V1;
|
|
passFirstTimeModel3.Month5 = data["Month5"].V2;
|
|
passFirstTimeModel2.Month5 = data["Month5"].V3;
|
|
|
|
passFirstTimeModel1.Month6 = data["Month6"].V1;
|
|
passFirstTimeModel3.Month6 = data["Month6"].V2;
|
|
passFirstTimeModel2.Month6 = data["Month6"].V3;
|
|
|
|
passFirstTimeModel1.Month7 = data["Month7"].V1;
|
|
passFirstTimeModel3.Month7 = data["Month7"].V2;
|
|
passFirstTimeModel2.Month7 = data["Month7"].V3;
|
|
|
|
passFirstTimeModel1.Month8 = data["Month8"].V1;
|
|
passFirstTimeModel3.Month8 = data["Month8"].V2;
|
|
passFirstTimeModel2.Month8 = data["Month8"].V3;
|
|
|
|
passFirstTimeModel1.Month9 = data["Month9"].V1;
|
|
passFirstTimeModel3.Month9 = data["Month9"].V2;
|
|
passFirstTimeModel2.Month9 = data["Month9"].V3;
|
|
|
|
passFirstTimeModel1.Month10 = data["Month10"].V1;
|
|
passFirstTimeModel3.Month10 = data["Month10"].V2;
|
|
passFirstTimeModel2.Month10 = data["Month10"].V3;
|
|
|
|
passFirstTimeModel1.Month11 = data["Month11"].V1;
|
|
passFirstTimeModel3.Month11 = data["Month11"].V2;
|
|
passFirstTimeModel2.Month11 = data["Month11"].V3;
|
|
|
|
passFirstTimeModel1.Month12 = data["Month12"].V1;
|
|
passFirstTimeModel3.Month12 = data["Month12"].V2;
|
|
passFirstTimeModel2.Month12 = data["Month12"].V3;
|
|
#endregion
|
|
|
|
#region 汇总
|
|
|
|
passFirstTimeModel1.MonthlyCumulative = data["MonthlyCumulative"].V1;
|
|
passFirstTimeModel3.MonthlyCumulative = data["MonthlyCumulative"].V2;
|
|
passFirstTimeModel2.MonthlyCumulative = data["MonthlyCumulative"].V3;
|
|
|
|
passFirstTimeModel1.AnnualAccumulation = data["AnnualAccumulation"].V1;
|
|
passFirstTimeModel3.AnnualAccumulation = data["AnnualAccumulation"].V2;
|
|
passFirstTimeModel2.AnnualAccumulation = data["AnnualAccumulation"].V3;
|
|
|
|
#endregion
|
|
passFirstTimeModel.Add(passFirstTimeModel1);
|
|
passFirstTimeModel.Add(passFirstTimeModel2);
|
|
passFirstTimeModel.Add(passFirstTimeModel3);
|
|
|
|
|
|
return passFirstTimeModel.ToJson();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
|
|
public DataTable ExportAll1(string DateNow)
|
|
{
|
|
string date = DateNow;
|
|
var dates = date.ToDate();
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysMonth = dates.ToString("MM");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
var firstDayofYear = new DateTime(dates.Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayofNextYear = new DateTime(dates.Year + 1, 1, 1).ToString("yyyy-MM-dd");
|
|
|
|
|
|
|
|
#region [SQL]
|
|
|
|
//获取传递的年份和月份
|
|
|
|
|
|
#region [SQL]
|
|
|
|
#region fistNGsql 一次不良数量
|
|
string fistNGsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where ZZJG='NG' AND CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
) b where ZZJG='NG' AND CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(FistNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(FistNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.FistNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.FistNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(FistNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1 ";
|
|
#endregion
|
|
|
|
#region IncomingMterialssql 来料数量
|
|
string incomingMterialssql = $@"SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ1
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ2
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo WHERE CONVERT(DATE, a.FirstCheckTime) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
|
|
UNION ALL
|
|
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ1
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
WHERE CONVERT(DATE, a.FirstCheckTime) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
UNION ALL
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ2
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(FistNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(FistNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.FistNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.FistNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(FistNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1 DROP TABLE #tableMJ1 DROP TABLE #tableMJ2
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 复判ng sencondNgsql
|
|
string sencondNgsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(SecondNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(SecondNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.SecondNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.SecondNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(SecondNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 待判中 underReRudgmentsql
|
|
string underReRudgmentsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否' and CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(UnderReRudgment) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(UnderReRudgment) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.UnderReRudgment,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.UnderReRudgment,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(UnderReRudgment) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
#endregion
|
|
|
|
#endregion
|
|
var dt1 = SqlHelper.CmdExecuteDataTable(incomingMterialssql);
|
|
var dt2 = SqlHelper.CmdExecuteDataTable(fistNGsql);
|
|
var dt3 = SqlHelper.CmdExecuteDataTable(sencondNgsql);
|
|
var dt4 = SqlHelper.CmdExecuteDataTable(underReRudgmentsql);
|
|
|
|
// 创建一个新的 DataTable
|
|
DataTable table = new DataTable();
|
|
|
|
// 添加列到 DataTable
|
|
table.Columns.Add("分解指标", typeof(string));
|
|
DataRow row1 = table.NewRow();
|
|
DataRow row2 = table.NewRow();
|
|
DataRow row3 = table.NewRow();
|
|
|
|
row1["分解指标"] = "TOTAL(一次检验合格率)";
|
|
row2["分解指标"] = "不良率(对外改善)";
|
|
row3["分解指标"] = "复判合格率(对内改善)";
|
|
|
|
var data = PassCount(new List<string> {
|
|
"Week1", "Week2", "Week3", "Week4", "Week5", "Week6",
|
|
"Month1",
|
|
"Month2",
|
|
"Month3",
|
|
"Month4",
|
|
"Month5",
|
|
"Month6",
|
|
"Month7",
|
|
"Month8",
|
|
"Month9",
|
|
"Month10",
|
|
"Month11",
|
|
"Month12","MonthlyCumulative","AnnualAccumulation"},
|
|
dt1, dt2, dt3, dt4);
|
|
|
|
// 添加月份和周次的列
|
|
string[] weeksInJanuary = { $"{daysMonth}月第1周", $"{daysMonth}月第2周", $"{daysMonth}月第3周", $"{daysMonth}月第4周", $"{daysMonth}月第5周", $"{daysMonth}月第6周" };
|
|
|
|
for (int j = 0; j < weeksInJanuary.Length; j++)
|
|
{
|
|
string week = weeksInJanuary[j];
|
|
int i = j + 1;
|
|
table.Columns.Add(week, typeof(string));
|
|
row1[week] = data["Week" + i].V1 + "%";
|
|
row2[week] = data["Week" + i].V3 + "%";
|
|
row3[week] = data["Week" + i].V2 + "%";
|
|
}
|
|
|
|
table.Columns.Add("当月累计", typeof(string));
|
|
row1["当月累计"] = data["MonthlyCumulative"].V1 + "%";
|
|
row2["当月累计"] = data["MonthlyCumulative"].V3 + "%";
|
|
row3["当月累计"] = data["MonthlyCumulative"].V2 + "%";
|
|
|
|
// 添加月份的列
|
|
string[] months = { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" };
|
|
|
|
for (int j = 0; j < months.Length; j++)
|
|
{
|
|
string month = months[j];
|
|
int i = j + 1;
|
|
table.Columns.Add(month, typeof(string));
|
|
row1[month] = data["Month" + i].V1 + "%";
|
|
row2[month] = data["Month" + i].V3 + "%";
|
|
row3[month] = data["Month" + i].V2 + "%";
|
|
}
|
|
|
|
table.Columns.Add("年度累计", typeof(string));
|
|
row1["年度累计"] = data["AnnualAccumulation"].V1+"%";
|
|
row2["年度累计"] = data["AnnualAccumulation"].V3+"%";
|
|
row3["年度累计"] = data["AnnualAccumulation"].V2 + "%";
|
|
|
|
table.Rows.Add(row1);
|
|
table.Rows.Add(row2);
|
|
table.Rows.Add(row3);
|
|
|
|
|
|
|
|
return table;
|
|
#endregion
|
|
|
|
}
|
|
|
|
private Dictionary<string,dynamic> PassCount(List<string> weeks,
|
|
DataTable dt1, DataTable dt2, DataTable dt3, DataTable dt4)
|
|
{
|
|
Dictionary<string, dynamic> result = new Dictionary<string, dynamic>();
|
|
|
|
foreach (var item in weeks)
|
|
{
|
|
decimal tmp1 = dt1.Rows[0][item].ToDecimal();
|
|
decimal tmp2 = dt2.Rows[0][item].ToDecimal();
|
|
decimal tmp3 = dt3.Rows[0][item].ToDecimal();
|
|
decimal tmp4 = dt4.Rows[0][item].ToDecimal();
|
|
|
|
|
|
decimal v1 = tmp1 == 0 ? 0 : Math.Round((tmp1 - tmp2) / tmp1 * 100, 1);
|
|
decimal v2 = tmp1==0?0:(tmp1 - tmp4) == 0 ? 0 : Math.Round((tmp2 - tmp3) / (tmp1 - tmp4) * 100, 1);
|
|
decimal v3 = tmp1 == 0 ? 0 : 100 - v1- v2;
|
|
|
|
result.Add(item,new {
|
|
V1 = v1,
|
|
V2 = v3,
|
|
V3 = v2
|
|
});
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
private decimal Count(string a, string b)
|
|
{
|
|
var x = a.ToDecimal();
|
|
if (x == 0)
|
|
return 0;
|
|
return Math.Round((x - b.ToDecimal()) /x * 100, 1);
|
|
}
|
|
#endregion
|
|
|
|
#region
|
|
/// <summary>
|
|
/// 对外改善异常追踪表
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetPassFirstTime2(string queryJson)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
int year = queryParam["DateNow"].ToString().Substring(0, 4).ToInt();
|
|
string date = queryParam["DateNow"].ToString();
|
|
var dates = date.ToDate();
|
|
var Year = new DateTime(dates.Year, 1, 1).ToString("yyyy-MM-dd") ;
|
|
var WYear= new DateTime(dates.AddYears(1).Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
string sql = @"
|
|
SELECT DISTINCT COUNT(*) AS GS, BRGDesc,A.BadReasonDesc,'周'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{0}'))+1) AS ZB
|
|
INTO #Table1 FROM (SELECT DISTINCT
|
|
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX1.BadReasonDesc END AS BadReasonDesc,--不良原因
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
'' BRGDesc,'' BadReasonDesc,'' BadDesc,NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA,'' CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno=G.lotno
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.lotno IS NOT NULL
|
|
and a.MUSER<>'admin'
|
|
GROUP BY a.InvCode,C.InvName,C.InvStd, REPLACE(C.ClassName, '编码规则', ''),ISNULL(D.ASNCode,E.OASNCode),F.BatchCode,
|
|
ISNULL(D.MUSER,E.MUSER),ISNULL(D.MUSERName,E.MUSERName),FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy/MM/dd'),A.MUSERName,A.TransCode
|
|
) A WHERE 1=1 AND A.BRGDesc<>'' and A.BRGDesc IS NOT NULL AND A.BRGDesc<>'复判NG' AND A.SFJA='是' AND A.BadReasonDesc IS NOT NULL
|
|
AND CHUJIANSHIJIAN BETWEEN '{0}' AND '{1}'
|
|
GROUP BY BRGDesc,A.BadReasonDesc,CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{0}'))+1)
|
|
|
|
SELECT DISTINCT COUNT(*) AS GS, BRGDesc,A.BadReasonDesc,'月'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS ZB
|
|
INTO #MothTable1 FROM (SELECT DISTINCT
|
|
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX1.BadReasonDesc END AS BadReasonDesc,--不良原因
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
'' BRGDesc,'' BadReasonDesc,'' BadDesc,NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA,''CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno=G.lotno
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.lotno IS NOT NULL
|
|
and a.MUSER<>'admin'
|
|
GROUP BY a.InvCode,C.InvName,C.InvStd, REPLACE(C.ClassName, '编码规则', ''),ISNULL(D.ASNCode,E.OASNCode),F.BatchCode,
|
|
ISNULL(D.MUSER,E.MUSER),ISNULL(D.MUSERName,E.MUSERName),FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy/MM/dd'),A.MUSERName,A.TransCode
|
|
) A WHERE 1=1 AND A.BRGDesc<>'' and A.BRGDesc IS NOT NULL AND A.BRGDesc<>'复判NG' AND A.SFJA='是' AND A.BadReasonDesc IS NOT NULL
|
|
AND CHUJIANSHIJIAN BETWEEN '{2}' AND '{3}'
|
|
GROUP BY BRGDesc,A.BadReasonDesc, DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
|
|
|
|
SELECT SUM(GS) AS HZcount,BRGDesc INTO #Table2 FROM #Table1 GROUP BY BRGDesc
|
|
|
|
SELECT SUM(GS) AS HZcount,BRGDesc INTO #MothTable2 FROM #MothTable1 GROUP BY BRGDesc
|
|
|
|
|
|
SELECT * INTO #Table3 FROM #Table1
|
|
UNION
|
|
SELECT b.GS,b.BRGDesc,b.BadReasonDesc,a.Num FROM [ICSMonth] a
|
|
LEFT JOIN #MothTable1 b ON a.Num=b.ZB
|
|
|
|
|
|
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.ZB
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT * INTO #Table4 FROM #Table3
|
|
PIVOT ( SUM(GS) FOR ZB IN ('+
|
|
@cols+') )a orDER BY BRGDesc
|
|
|
|
SELECT ROW_NUMBER() OVER( order by CONVERT(DECIMAL(16,1),ROUND(c.HZcount*1.0/(select sum(HZcount) from #MothTable2) * 100, 2)) desc)NUM, A.*,b.HZcount as ZBCount,C.HZcount as YBCount,CONVERT(nvarchar(20), CONVERT(DECIMAL(16,1),ROUND(c.HZcount*1.0/(select sum(HZcount) from #MothTable2) * 100, 2)))+''%''
|
|
AS Proportion,D.EATTRIBUTE1 as Improvementmeasures,D.EATTRIBUTE2 as Responsibledepartment FROM #Table4 A
|
|
LEFT JOIN #Table2 B ON A.BRGDesc=B.BRGDesc
|
|
LEFT JOIN #MothTable2 C ON A.BRGDesc=C.BRGDesc
|
|
LEFT JOIN ICSBadReason D ON A.BadReasonDesc=D.BadReasonDesc
|
|
Where A.BRGDesc is not NULL
|
|
ORDER BY CONVERT(DECIMAL(16,1),ROUND(c.HZcount*1.0/(select sum(HZcount) from #MothTable2) * 100, 2)) DESC
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
|
|
";
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth, Year,WYear);
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
#endregion
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region
|
|
/// <summary>
|
|
/// 对外改善异常追踪表
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetPassFirstTime4(string queryJson)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
int year = queryParam["DateNow"].ToString().Substring(0, 4).ToInt();
|
|
string date = queryParam["DateNow"].ToString();
|
|
var dates = date.ToDate();
|
|
var Year = new DateTime(dates.Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var WYear = new DateTime(dates.AddYears(1).Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
string sql = @"
|
|
SELECT DISTINCT * INTO #Temp1
|
|
FROM (SELECT DISTINCT
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME), 'yyyy-MM-dd') MTIME,
|
|
CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,DN.MTIME)))+'月' AS YB,
|
|
a.InvCode,
|
|
c.VenName,
|
|
d.InvName,
|
|
b.BLMX,
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
CASE when a.FinalResult IS NULL THEN a.IQCHeaderResult WHEN a.IQCHeaderResult IS NULL THEN
|
|
SQEEngineerResult WHEN SQEEngineerResult IS NULL THEN IQCGroupHeaderResult ELSE a.FinalResult END AS Result,
|
|
a.SQEEngineerRemark,
|
|
d.ClassName,
|
|
'第'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,DN.MTIME))%DATEPART(WEEK,DATEADD(DAY,-1,'{0}'))+1)+'周' AS ZB,
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN ICSDeliveryNotice DN ON a.ASNCode=DN.ASNCode
|
|
LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY with (nolock) WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME,120), 'yyyy-MM-dd') MTIME,
|
|
'' AS ZB,
|
|
a.InvCode,
|
|
ISNULL(D.MUSERName,E.MUSERName) VENNAME,
|
|
C.InvName,
|
|
'' BLMX,
|
|
'' BRGDesc,'' BadDesc,
|
|
'' AS Result,
|
|
'' AS SQEEngineerRemark,
|
|
c.ClassName,
|
|
''AS YB,
|
|
NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno=G.lotno
|
|
inner JOIN ICSODeliveryNotice DN ON E.OASNCode=DN.OASNCode
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.lotno IS NOT NULL
|
|
and a.MUSER<>'admin'
|
|
|
|
) A WHERE 1=1 AND A.BRGDesc<>'' and A.BRGDesc IS NOT NULL AND A.BRGDesc='复判NG' AND A.SFJA='是'
|
|
AND MTIME BETWEEN '{0}' AND '{1}'
|
|
|
|
|
|
--SELECT * FROM #Temp1
|
|
|
|
SELECT DISTINCT * INTO #YearTemp1 FROM (SELECT DISTINCT
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME), 'yyyy-MM-dd') MTIME,
|
|
CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,DN.MTIME)))+'月' AS YB,
|
|
a.InvCode,
|
|
c.VenName,
|
|
d.InvName,
|
|
b.BLMX,
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
CASE when a.SQEEngineerResult IS NULL THEN a.IQCGroupHeaderResult WHEN a.IQCGroupHeaderResult IS NULL THEN
|
|
Result ELSE a.SQEEngineerResult END AS Result,
|
|
a.SQEEngineerRemark,
|
|
d.ClassName,
|
|
'' AS ZB,
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN ICSDeliveryNotice DN ON a.ASNCode=DN.ASNCode
|
|
LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY with (nolock) WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME,120), 'yyyy-MM-dd') MTIME,
|
|
'' AS ZB,
|
|
a.InvCode,
|
|
ISNULL(D.MUSERName,E.MUSERName) VENNAME,
|
|
C.InvName,
|
|
'' BLMX,
|
|
'' BRGDesc,'' BadDesc,
|
|
'' AS Result,
|
|
'' AS SQEEngineerRemark,
|
|
c.ClassName,
|
|
''AS YB,
|
|
NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno=G.lotno
|
|
inner JOIN ICSODeliveryNotice DN ON E.OASNCode=DN.OASNCode
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.lotno IS NOT NULL
|
|
and a.MUSER<>'admin'
|
|
|
|
) A WHERE 1=1 AND A.BRGDesc<>'' and A.BRGDesc IS NOT NULL AND A.BRGDesc='复判NG' AND A.SFJA='是'
|
|
AND MTIME BETWEEN '{2}' AND '{3}'
|
|
|
|
--SELECT * FROM #YearTemp1
|
|
-- SELECT COUNT(*) AS cc,InvCode,MTIME INTO #Table2 FROM #Temp1 GROUP BY InvCode,MTIME
|
|
--UNION
|
|
|
|
|
|
SELECT COUNT(*) AS cc, b.InvCode,b.MTIME,a.Num INTO #Table3 FROM [ICSMonthByNew] a
|
|
LEFT JOIN #YearTemp1 b ON a.Num=b.YB
|
|
GROUP BY b.InvCode,b.MTIME,a.Num
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Num
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT * INTO #Table4 FROM #Table3
|
|
PIVOT ( SUM(cc) FOR Num IN ('+
|
|
@cols+') )a orDER BY InvCode
|
|
|
|
|
|
select distinct A.*,D.* from #Temp1 A
|
|
LEFT JOIN #YearTemp1 C ON A.InvCode=C.InvCode
|
|
LEFT JOIN #Table4 D ON A.InvCode=D.InvCode
|
|
Where A.InvCode is not null
|
|
order by A.MTIME desc
|
|
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
DROP TABLE #Temp1 DROP TABLE #YearTemp1 DROP TABLE #Table3
|
|
|
|
|
|
|
|
|
|
|
|
";
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth, Year,WYear);
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
#endregion
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region
|
|
/// <summary>
|
|
/// 对外改善异常追踪表
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetPassFirstTime6(string queryJson)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
int year = queryParam["DateNow"].ToString().Substring(0, 4).ToInt();
|
|
string date = queryParam["DateNow"].ToString();
|
|
var dates = date.ToDate();
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).AddDays(-1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
string sql = @"SELECT c.Num,c.[Month]
|
|
INTO #TempMonth
|
|
FROM ICSMonth c WHERE c.[Month] BETWEEN '{0}' AND '{1}'
|
|
ORDER BY c.Num
|
|
|
|
|
|
select '1' Num,'交货批次数' Type INTO #TempType UNION select '2' Num,'异常批次数' Type UNION select '3' Num,'批次不良率' Type
|
|
|
|
SELECT
|
|
VenName,
|
|
WLFL
|
|
INTO #temp1
|
|
FROM (
|
|
SELECT
|
|
VenName,
|
|
WLFL,
|
|
ROW_NUMBER() OVER (PARTITION BY WLFL ORDER BY SL DESC) AS RowNum
|
|
FROM (
|
|
SELECT
|
|
COUNT(*) AS SL,
|
|
VenName,
|
|
WLFL
|
|
FROM (
|
|
SELECT DISTINCT
|
|
REPLACE(d.ClassName, '编码规则', '') WLFL,
|
|
|
|
c.VenName,
|
|
FORMAT(CONVERT(DATE,FirstCheckTime, 120), 'yyyy-MM') CHUJIANSHIJIAN,
|
|
a.IQCHeaderResult ZGJG
|
|
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) ON a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) ON a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode = A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode = A.BRGCode
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
REPLACE(C.ClassName, '编码规则', '') WLFL,
|
|
ISNULL(D.MUSERName, E.MUSERName) VENNAME,
|
|
FORMAT(CONVERT(datetime, a.MTIME, 120), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
'' ZGJG
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
WHERE (a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND G.LotNo IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
) AS A WHERE CHUJIANSHIJIAN IN (SELECT [Month] FROM #TempMonth)
|
|
GROUP BY VenName, WLFL
|
|
) AS GroupedResults
|
|
) AS RankedResults
|
|
WHERE RowNum <= 3
|
|
ORDER BY WLFL DESC, VenName;
|
|
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempForecast
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.ClassName, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT REPLACE(C.ClassName, '编码规则', '') WLFL,
|
|
ISNULL(D.MUSERName,E.MUSERName) VENNAME,
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a with (nolock)
|
|
INNER JOIN ICSWareHouseLotInfo b with (nolock) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C with (nolock) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D with (nolock) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E with (nolock) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE with (nolock) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F with (nolock) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G with (nolock) ON G.LOTNO =A.LotNo
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.LotNo IS NULL
|
|
and a.MUSER<>'admin'
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName WHERE 1=1 and FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') IN (SELECT [Month] FROM #TempMonth)
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempDetail
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.ClassName, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
a.IQCGroupHeaderResult ZGJG
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName WHERE 1=1 AND a.ZGJG='NG'
|
|
AND FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') IN (SELECT [Month] FROM #TempMonth)
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
SELECT VenName,'1' AS Num,'交货批次数' AS Type,WLFL,ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
INTO #TempForecastMonth
|
|
FROM #TempForecast
|
|
UNION ALL
|
|
SELECT VenName,'2' AS Num,'异常批次数' AS Type,WLFL, ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
FROM #TempDetail
|
|
UNION ALL
|
|
SELECT a.VenName,'3' AS Num,'批次不良率' AS Type,a.WLFL,
|
|
CONVERT(NVARCHAR(20),CONVERT(DECIMAL(16,1),ROUND(b.Quantity*1.0/(CASE WHEN ISNULL(a.Quantity, 0)=0 THEN 1 ELSE a.Quantity END) * 100, 2)))
|
|
+'%' AS Quantity,a.CHUJIANSHIJIAN
|
|
FROM #TempForecast a
|
|
LEFT JOIN #TempDetail b ON a.VenName=b.VenName AND a.WLFL=b.WLFL
|
|
|
|
|
|
SELECT ISNULL(a.VenName, b.VenName) AS VenName, ISNULL(a.Num, b.Num) AS Num,ISNULL(a.Type, b.Type) AS Type,ISNULL(a.CHUJIANSHIJIAN, b.CHUJIANSHIJIAN) AS CHUJIANSHIJIAN,b.Quantity,ISNULL(a.WLFL, b.WLFL) AS WLFL
|
|
INTO #TempForecastAll
|
|
FROM (SELECT f.VenName,WLFL, t.Num,t.Type,CHUJIANSHIJIAN,f.Quantity FROM #TempForecast f,#TempType t) a
|
|
FULL JOIN #TempForecastMonth b ON a.VenName=b.VenName AND a.Type=b.Type AND a.CHUJIANSHIJIAN=b.CHUJIANSHIJIAN
|
|
DECLARE @sql varchar(4000)
|
|
|
|
SELECT @sql=isnull(@sql+',','')+'['+[Month]+']'
|
|
FROM (SELECT [Month] FROM #TempMonth) AS a
|
|
|
|
|
|
SET @sql='SELECT Type AS 类别, WLFL AS 产品大类,VenName AS 供应商,'+@sql+' FROM #TempForecastAll PIVOT( MAX(Quantity) FOR CHUJIANSHIJIAN IN ('+@sql+'))a ORDER BY WLFL, VenName'
|
|
|
|
PRINT(@sql)
|
|
EXEC(@sql)
|
|
|
|
DROP TABLE #TempMonth
|
|
DROP TABLE #TempDetail
|
|
DROP TABLE #TempForecast
|
|
DROP TABLE #TempForecastMonth
|
|
DROP TABLE #TempForecastAll
|
|
DROP TABLE #TempType
|
|
DROP TABLE #temp1";
|
|
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth);
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
#endregion
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region
|
|
/// <summary>
|
|
/// 对外改善异常追踪表
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable ExportAll6(string DateNow)
|
|
{
|
|
//站点信息
|
|
string date = DateNow;
|
|
var dates = date.ToDate();
|
|
var daysMonth = dates.ToString("MM");
|
|
var month = dates.ToString("yyyy-MM");
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).AddDays(-1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
string sql = @"SELECT c.Num,c.[Month]
|
|
INTO #TempMonth
|
|
FROM ICSMonth c WHERE c.[Month] BETWEEN '{0}' AND '{1}'
|
|
ORDER BY c.Num
|
|
|
|
|
|
select '1' Num,'交货批次数' Type INTO #TempType UNION select '2' Num,'异常批次数' Type UNION select '3' Num,'批次不良率' Type
|
|
|
|
SELECT
|
|
VenName,
|
|
WLFL
|
|
INTO #temp1
|
|
FROM (
|
|
SELECT
|
|
VenName,
|
|
WLFL,
|
|
ROW_NUMBER() OVER (PARTITION BY WLFL ORDER BY SL DESC) AS RowNum
|
|
FROM (
|
|
SELECT
|
|
COUNT(*) AS SL,
|
|
VenName,
|
|
WLFL
|
|
FROM (
|
|
SELECT DISTINCT
|
|
REPLACE(d.ClassName, '编码规则', '') WLFL,
|
|
|
|
c.VenName,
|
|
FORMAT(CONVERT(DATE,FirstCheckTime, 120), 'yyyy-MM') CHUJIANSHIJIAN,
|
|
a.IQCHeaderResult ZGJG
|
|
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) ON a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) ON a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode = A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode = A.BRGCode
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
REPLACE(C.ClassName, '编码规则', '') WLFL,
|
|
ISNULL(D.MUSERName, E.MUSERName) VENNAME,
|
|
FORMAT(CONVERT(datetime, a.MTIME, 120), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
'' ZGJG
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
WHERE (a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND G.LotNo IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
) AS A WHERE CHUJIANSHIJIAN IN (SELECT [Month] FROM #TempMonth)
|
|
GROUP BY VenName, WLFL
|
|
) AS GroupedResults
|
|
) AS RankedResults
|
|
WHERE RowNum <= 3
|
|
ORDER BY WLFL DESC, VenName;
|
|
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempForecast
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.ClassName, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT REPLACE(C.ClassName, '编码规则', '') WLFL,
|
|
ISNULL(D.MUSERName,E.MUSERName) VENNAME,
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a with (nolock)
|
|
INNER JOIN ICSWareHouseLotInfo b with (nolock) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C with (nolock) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D with (nolock) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E with (nolock) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE with (nolock) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F with (nolock) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G with (nolock) ON G.LOTNO =A.LotNo
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.LotNo IS NULL
|
|
and a.MUSER<>'admin'
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName WHERE 1=1 and FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') IN (SELECT [Month] FROM #TempMonth)
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempDetail
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.ClassName, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
a.IQCGroupHeaderResult ZGJG
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName WHERE 1=1 AND a.ZGJG='NG'
|
|
AND FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') IN (SELECT [Month] FROM #TempMonth)
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
SELECT VenName,'1' AS Num,'交货批次数' AS Type,WLFL,ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
INTO #TempForecastMonth
|
|
FROM #TempForecast
|
|
UNION ALL
|
|
SELECT VenName,'2' AS Num,'异常批次数' AS Type,WLFL, ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
FROM #TempDetail
|
|
UNION ALL
|
|
SELECT a.VenName,'3' AS Num,'批次不良率' AS Type,a.WLFL,
|
|
CONVERT(NVARCHAR(20),CONVERT(DECIMAL(16,1),ROUND(b.Quantity*1.0/(CASE WHEN ISNULL(a.Quantity, 0)=0 THEN 1 ELSE a.Quantity END) * 100, 2)))
|
|
+'%' AS Quantity,a.CHUJIANSHIJIAN
|
|
FROM #TempForecast a
|
|
LEFT JOIN #TempDetail b ON a.VenName=b.VenName AND a.WLFL=b.WLFL
|
|
|
|
|
|
SELECT ISNULL(a.VenName, b.VenName) AS VenName, ISNULL(a.Num, b.Num) AS Num,ISNULL(a.Type, b.Type) AS Type,ISNULL(a.CHUJIANSHIJIAN, b.CHUJIANSHIJIAN) AS CHUJIANSHIJIAN,b.Quantity,ISNULL(a.WLFL, b.WLFL) AS WLFL
|
|
INTO #TempForecastAll
|
|
FROM (SELECT f.VenName,WLFL, t.Num,t.Type,CHUJIANSHIJIAN,f.Quantity FROM #TempForecast f,#TempType t) a
|
|
FULL JOIN #TempForecastMonth b ON a.VenName=b.VenName AND a.Type=b.Type AND a.CHUJIANSHIJIAN=b.CHUJIANSHIJIAN
|
|
DECLARE @sql varchar(4000)
|
|
|
|
SELECT @sql=isnull(@sql+',','')+'['+[Month]+']'
|
|
FROM (SELECT [Month] FROM #TempMonth) AS a
|
|
|
|
|
|
SET @sql='SELECT WLFL AS 材料类型,VenName AS TOP厂商,Type AS 项目别,'+@sql+' FROM #TempForecastAll PIVOT( MAX(Quantity) FOR CHUJIANSHIJIAN IN ('+@sql+'))a ORDER BY WLFL, VenName'
|
|
|
|
PRINT(@sql)
|
|
EXEC(@sql)
|
|
|
|
DROP TABLE #TempMonth
|
|
DROP TABLE #TempDetail
|
|
DROP TABLE #TempForecast
|
|
DROP TABLE #TempForecastMonth
|
|
DROP TABLE #TempForecastAll
|
|
DROP TABLE #TempType
|
|
DROP TABLE #temp1";
|
|
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth);
|
|
var dt = SqlHelper.GetDataTableBySql(sql);
|
|
string[] vs = new string[] { "材料类型", "TOP厂商", "项目别", $"{month}" };
|
|
// 创建一个新的 DataTable
|
|
DataTable table = new DataTable();
|
|
for (int j = 0; j < vs.Length; j++)
|
|
{
|
|
table.Columns.Add(vs[j], typeof(string));
|
|
}
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
DataRow row1 = table.NewRow();
|
|
row1["材料类型"] = dt.Rows[i]["材料类型"].ToString();
|
|
row1["TOP厂商"] = dt.Rows[i]["TOP厂商"].ToString();
|
|
row1["项目别"] = dt.Rows[i]["项目别"].ToString();
|
|
row1[$"{month}"] = dt.Rows[i][$"{month}"].ToString();
|
|
table.Rows.Add(row1);
|
|
}
|
|
return table;
|
|
#endregion
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region
|
|
/// <summary>
|
|
/// 对外改善异常追踪表
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetPassFirstTime5(string queryJson)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
int year = queryParam["DateNow"].ToString().Substring(0, 4).ToInt();
|
|
string date = queryParam["DateNow"].ToString();
|
|
var dates = date.ToDate();
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).AddDays(-1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
string sql = @"SELECT top 20
|
|
Sum (count) Invcount,VenName
|
|
INTO #VanName
|
|
from
|
|
|
|
(SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.IQCHeaderResult ZGJG,
|
|
a.InvBatcgNo BatchCode,
|
|
1 as count
|
|
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) ON a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) ON a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode = A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode = A.BRGCode
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}'
|
|
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
REPLACE(C.InvCode, '编码规则', '') WLFL,
|
|
J.VenName VENNAME,
|
|
'' ZGJG,
|
|
F.BatchCode,
|
|
1 as count
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSASN H WITH (NOLOCK) ON H.ASNCode=D.ASNCode AND H.WorkPoint=D.WorkPoint
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASN I WITH (NOLOCK) ON I.OASNCode=E.OASNCode AND I.WorkPoint=E.WorkPoint
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
LEFT JOIN ICSVendor J ON ISNULL(H.VenCode, I.VenCode)=J.VenCode AND J.WorkPoint=a.WorkPoint
|
|
WHERE (a.BusinessCode = '1' OR a.BusinessCode = '9') AND a.MTIME>'{0}' AND a.MTIME<'{1}'
|
|
) a
|
|
GROUP BY a.VenName
|
|
ORDER BY Invcount DESC
|
|
|
|
|
|
SELECT c.Num,c.[Month]
|
|
INTO #TempMonth
|
|
FROM ICSMonth c WHERE c.[Month] BETWEEN '{0}' AND '{1}'
|
|
ORDER BY c.Num
|
|
|
|
|
|
select '1' Num,'交货批次数' Type INTO #TempType UNION select '2' Num,'异常批次数' Type UNION select '3' Num,'批次不良率' Type
|
|
|
|
SELECT
|
|
VenName,
|
|
WLFL
|
|
INTO #temp1
|
|
FROM (
|
|
SELECT ROW_NUMBER() OVER (PARTITION BY VenName ORDER BY SL DESC) AS RowNum,
|
|
VenName,
|
|
WLFL,
|
|
SL
|
|
|
|
FROM (
|
|
SELECT
|
|
COUNT(*) AS SL,
|
|
VenName,
|
|
WLFL
|
|
FROM (
|
|
SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.InvBatcgNo BatchCode,
|
|
FORMAT(CONVERT(DATE,FirstCheckTime, 120), 'yyyy-MM') CHUJIANSHIJIAN,
|
|
a.IQCHeaderResult ZGJG
|
|
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) ON a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) ON a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode = A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode = A.BRGCode
|
|
inner JOIN #VanName v ON c.VenName=v.VenName
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}'
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
REPLACE(C.InvCode, '编码规则', '') WLFL,
|
|
J.VenName VENNAME,
|
|
f.BatchCode,
|
|
FORMAT(CONVERT(datetime, a.MTIME, 120), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
'' ZGJG
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSASN H WITH (NOLOCK) ON H.ASNCode=D.ASNCode AND H.WorkPoint=D.WorkPoint
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASN I WITH (NOLOCK) ON I.OASNCode=E.OASNCode AND I.WorkPoint=E.WorkPoint
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
LEFT JOIN ICSVendor J ON ISNULL(H.VenCode, I.VenCode)=J.VenCode AND J.WorkPoint=a.WorkPoint
|
|
inner JOIN #VanName v ON J.VenName=v.VenName
|
|
WHERE (a.BusinessCode = '1' OR a.BusinessCode = '9') AND a.MTIME>'{0}' AND a.MTIME<'{1}'
|
|
AND G.LotNo IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
) AS A
|
|
GROUP BY VenName, WLFL
|
|
) AS GroupedResults
|
|
) AS RankedResults
|
|
WHERE RowNum <= 5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempForecast
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.InvBatcgNo BatchCode,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN #VanName v ON c.VenName=v.VenName
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}'
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT REPLACE(C.InvCode, '编码规则', '') WLFL,
|
|
J.VenName VENNAME,
|
|
f.BatchCode,
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSASN H WITH (NOLOCK) ON H.ASNCode=D.ASNCode AND H.WorkPoint=D.WorkPoint
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASN I WITH (NOLOCK) ON I.OASNCode=E.OASNCode AND I.WorkPoint=E.WorkPoint
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
LEFT JOIN ICSVendor J ON ISNULL(H.VenCode, I.VenCode)=J.VenCode AND J.WorkPoint=a.WorkPoint
|
|
inner JOIN #VanName v ON J.VenName=v.VenName
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.LotNo IS NULL
|
|
and a.MUSER<>'admin' AND a.MTIME>'{0}' AND a.MTIME<'{1}'
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName --AND a.BatchCode=b.BatchCode
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempDetail
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.InvBatcgNo BatchCode,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
a.IQCHeaderResult ZGJG
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN #VanName v ON c.VenName=v.VenName
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}' AND a.IQCHeaderResult='NG'
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
SELECT VenName,'1' AS Num,'交货批次数' AS Type,WLFL,ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
INTO #TempForecastMonth
|
|
FROM #TempForecast
|
|
UNION ALL
|
|
SELECT VenName,'2' AS Num,'异常批次数' AS Type,WLFL, ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
FROM #TempDetail
|
|
UNION ALL
|
|
SELECT a.VenName,'3' AS Num,'批次不良率' AS Type,a.WLFL,CAST(CAST(ISNULL(b.Quantity,0)/(CASE WHEN ISNULL(a.Quantity, 0)=0 THEN 1 ELSE a.Quantity END)*100 AS DECIMAL(18,1)) AS VARCHAR(100))+'%' AS Quantity,a.CHUJIANSHIJIAN
|
|
FROM #TempForecast a
|
|
LEFT JOIN #TempDetail b ON a.VenName=b.VenName AND a.WLFL=b.WLFL
|
|
|
|
|
|
SELECT ISNULL(a.VenName, b.VenName) AS VenName, ISNULL(a.Num, b.Num) AS Num,ISNULL(a.Type, b.Type) AS Type,ISNULL(a.CHUJIANSHIJIAN, b.CHUJIANSHIJIAN) AS CHUJIANSHIJIAN,b.Quantity,ISNULL(a.WLFL, b.WLFL) AS WLFL
|
|
INTO #TempForecastAll
|
|
FROM (SELECT f.VenName,WLFL, t.Num,t.Type,CHUJIANSHIJIAN,f.Quantity FROM #TempForecast f,#TempType t) a
|
|
FULL JOIN #TempForecastMonth b ON a.VenName=b.VenName AND a.Type=b.Type AND a.CHUJIANSHIJIAN=b.CHUJIANSHIJIAN
|
|
DECLARE @sql varchar(4000)
|
|
|
|
SELECT @sql=isnull(@sql+',','')+'['+[Month]+']'
|
|
FROM (SELECT [Month] FROM #TempMonth) AS a
|
|
|
|
|
|
SET @sql='SELECT Type AS 类别, WLFL AS 物料编码,VenName AS 供应商,'+@sql+' FROM #TempForecastAll PIVOT( MAX(Quantity) FOR CHUJIANSHIJIAN IN ('+@sql+'))a order BY VenName,WLFL,Type '
|
|
|
|
PRINT(@sql)
|
|
EXEC(@sql)
|
|
|
|
DROP TABLE #TempMonth
|
|
DROP TABLE #TempDetail
|
|
DROP TABLE #TempForecast
|
|
DROP TABLE #TempForecastMonth
|
|
DROP TABLE #TempForecastAll
|
|
DROP TABLE #TempType
|
|
DROP TABLE #temp1
|
|
DROP TABLE #VanName
|
|
|
|
|
|
|
|
|
|
|
|
";
|
|
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth);
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
#endregion
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 复判NG--对外改善
|
|
/// <summary>
|
|
/// 复判NG--对外改善
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public string GetPassFirstTime3(string queryJson)
|
|
{
|
|
try
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
List<PassFirstTimeModel> passFirstTimeModel = new List<PassFirstTimeModel>();
|
|
|
|
|
|
//获取传递的年份和月份
|
|
int year = queryParam["DateNow"].ToString().Substring(0, 4).ToInt();
|
|
string date = queryParam["DateNow"].ToString();
|
|
var dates = date.ToDate();
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
var firstDayofYear = new DateTime(year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayofNextYear = new DateTime(year + 1, 1, 1).ToString("yyyy-MM-dd");
|
|
int month = dates.Month;
|
|
#region [SQL]
|
|
|
|
|
|
|
|
#region IncomingMterialssql 来料数量
|
|
string incomingMterialssql = $@"SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ1
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ2
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo WHERE CONVERT(DATE, a.FirstCheckTime ) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
|
|
UNION ALL
|
|
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ1
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
WHERE CONVERT(DATE, a.FirstCheckTime) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
UNION ALL
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ2
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(FistNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(FistNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.FistNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.FistNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(FistNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1 DROP TABLE #tableMJ1 DROP TABLE #tableMJ2
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 复判ng sencondNgsql
|
|
string sencondNgsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(SecondNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(SecondNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.SecondNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.SecondNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(SecondNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 待判中 underReRudgmentsql
|
|
string underReRudgmentsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否' and CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(UnderReRudgment) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(UnderReRudgment) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.UnderReRudgment,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.UnderReRudgment,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(UnderReRudgment) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
#endregion
|
|
|
|
#region 分类不良数量 calssNGsql
|
|
var calssNGsql = $@"DECLARE @M int = {month}
|
|
|
|
SELECT ClassName,
|
|
'0' MonthlyCumulative,
|
|
'0' AnnualAccumulation,
|
|
sum(case when Month = 1 then Rec else 0 end) Month1Rec,
|
|
sum(case when Month = 1 then Ng else 0 end) Month1,
|
|
sum(case when Month = 2 then Rec else 0 end) Month2Rec,
|
|
sum(case when Month = 2 then Ng else 0 end) Month2,
|
|
sum(case when Month = 3 then Rec else 0 end) Month3Rec,
|
|
sum(case when Month = 3 then Ng else 0 end) Month3,
|
|
sum(case when Month = 4 then Rec else 0 end) Month4Rec,
|
|
sum(case when Month = 4 then Ng else 0 end) Month4,
|
|
sum(case when Month = 5 then Rec else 0 end) Month5Rec,
|
|
sum(case when Month = 5 then Ng else 0 end) Month5,
|
|
sum(case when Month = 6 then Rec else 0 end) Month6Rec,
|
|
sum(case when Month = 6 then Ng else 0 end) Month6,
|
|
sum(case when Month = 7 then Rec else 0 end) Month7Rec,
|
|
sum(case when Month = 7 then Ng else 0 end) Month7,
|
|
sum(case when Month = 8 then Rec else 0 end) Month8Rec,
|
|
sum(case when Month = 8 then Ng else 0 end) Month8,
|
|
sum(case when Month = 9 then Rec else 0 end) Month9Rec,
|
|
sum(case when Month = 9 then Ng else 0 end) Month9,
|
|
sum(case when Month = 10 then Rec else 0 end) Month10Rec,
|
|
sum(case when Month = 10 then Ng else 0 end) Month10,
|
|
sum(case when Month = 11 then Rec else 0 end) Month11Rec,
|
|
sum(case when Month = 11 then Ng else 0 end) Month11,
|
|
sum(case when Month = 12 then Rec else 0 end) Month12Rec,
|
|
sum(case when Month = 12 then Ng else 0 end) Month12,
|
|
sum(case when Month = @M and week = 1 then Rec else 0 end) Week1Rec,
|
|
sum(case when Month = @M and week = 1 then Ng else 0 end) Week1,
|
|
sum(case when Month = @M and week = 2 then Rec else 0 end) Week2Rec,
|
|
sum(case when Month = @M and week = 2 then Ng else 0 end) Week2,
|
|
sum(case when Month = @M and week = 3 then Rec else 0 end) Week3Rec,
|
|
sum(case when Month = @M and week = 3 then Ng else 0 end) Week3,
|
|
sum(case when Month = @M and week = 4 then Rec else 0 end) Week4Rec,
|
|
sum(case when Month = @M and week = 4 then Ng else 0 end) Week4,
|
|
sum(case when Month = @M and week = 5 then Rec else 0 end) Week5Rec,
|
|
sum(case when Month = @M and week = 5 then Ng else 0 end) Week5,
|
|
sum(case when Month = @M and week = 6 then Rec else 0 end) Week6Rec,
|
|
sum(case when Month = @M and week = 6 then Ng else 0 end) Week6
|
|
|
|
from (
|
|
SELECT ClassName,Rec,NG,
|
|
dateName(month, DT) Month,
|
|
CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,DT))%DATEPART(WEEK,DATEADD(DAY,-1,DATEADD(month, DATEDIFF(month, 0, DT), 0)))+1) Week
|
|
|
|
|
|
From(
|
|
SELECT count(1) Rec, sum((case when a.SQEEngineerResult='NG' and a.IQCGroupHeaderResult='NG' then 1 else 0 end)) as NG,
|
|
d.ClassName,
|
|
CAST(a.FirstCheckTime AS DATE) DT
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
WHERE a.FirstCheckTime BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY d.ClassName, CAST(a.FirstCheckTime AS DATE)
|
|
)a)a group by classname";
|
|
|
|
#endregion
|
|
#endregion
|
|
var dt1 = SqlHelper.CmdExecuteDataTable(incomingMterialssql);
|
|
var dt2 = SqlHelper.CmdExecuteDataTable(sencondNgsql);
|
|
var dt3 = SqlHelper.CmdExecuteDataTable(underReRudgmentsql);
|
|
var dt4 = SqlHelper.CmdExecuteDataTable(calssNGsql);
|
|
for (int i=0;i<dt4.Rows.Count;i++)
|
|
{
|
|
PassFirstTimeModel passFirstTimeModel1 = new PassFirstTimeModel();
|
|
PassFirstTimeModel passFirstTimeModel2 = new PassFirstTimeModel();
|
|
passFirstTimeModel1.Decomposition1 = dt4.Rows[i]["ClassName"].ToString();
|
|
passFirstTimeModel1.Decomposition2 = "异常数量";
|
|
passFirstTimeModel1.Week1 = dt4.Rows[i]["Week1"].ToDecimal();
|
|
passFirstTimeModel1.Week2 = dt4.Rows[i]["Week2"].ToDecimal();
|
|
passFirstTimeModel1.Week3 = dt4.Rows[i]["Week3"].ToDecimal();
|
|
passFirstTimeModel1.Week4 = dt4.Rows[i]["Week4"].ToDecimal();
|
|
passFirstTimeModel1.Week5 = dt4.Rows[i]["Week5"].ToDecimal();
|
|
passFirstTimeModel1.Week6 = dt4.Rows[i]["Week6"].ToDecimal();
|
|
passFirstTimeModel1.MonthlyCumulative=dt4.Rows[i]["Week1"].ToDecimal()+dt4.Rows[i]["Week2"].ToDecimal()+
|
|
dt4.Rows[i]["Week3"].ToDecimal()+dt4.Rows[i]["Week4"].ToDecimal()+dt4.Rows[i]["Week5"].ToDecimal()+
|
|
dt4.Rows[i]["Week6"].ToDecimal();
|
|
passFirstTimeModel1.Month1 = dt4.Rows[i]["Month1"].ToDecimal();
|
|
passFirstTimeModel1.Month2 = dt4.Rows[i]["Month2"].ToDecimal();
|
|
passFirstTimeModel1.Month3 = dt4.Rows[i]["Month3"].ToDecimal();
|
|
passFirstTimeModel1.Month4 = dt4.Rows[i]["Month4"].ToDecimal();
|
|
passFirstTimeModel1.Month5 = dt4.Rows[i]["Month5"].ToDecimal();
|
|
passFirstTimeModel1.Month6 = dt4.Rows[i]["Month6"].ToDecimal();
|
|
passFirstTimeModel1.Month7 = dt4.Rows[i]["Month7"].ToDecimal();
|
|
passFirstTimeModel1.Month8 = dt4.Rows[i]["Month8"].ToDecimal();
|
|
passFirstTimeModel1.Month9 = dt4.Rows[i]["Month9"].ToDecimal();
|
|
passFirstTimeModel1.Month10 =dt4.Rows[i]["Month10"].ToDecimal();
|
|
passFirstTimeModel1.Month11 =dt4.Rows[i]["Month12"].ToDecimal();
|
|
passFirstTimeModel1.Month12 = dt4.Rows[i]["Month12"].ToDecimal();
|
|
passFirstTimeModel1.AnnualAccumulation =dt4.Rows[i]["Month1"].ToDecimal()+dt4.Rows[i]["Month2"].ToDecimal()+
|
|
dt4.Rows[i]["Month3"].ToDecimal()+dt4.Rows[i]["Month4"].ToDecimal()+dt4.Rows[i]["Month5"].ToDecimal()+
|
|
dt4.Rows[i]["Month6"].ToDecimal()+dt4.Rows[i]["Month7"].ToDecimal()+dt4.Rows[i]["Month8"].ToDecimal()+
|
|
dt4.Rows[i]["Month9"].ToDecimal()+dt4.Rows[i]["Month10"].ToDecimal()+dt4.Rows[i]["Month12"].ToDecimal()+
|
|
dt4.Rows[i]["Month12"].ToDecimal();
|
|
dt4.Rows[i]["MonthlyCumulative"] = passFirstTimeModel1.MonthlyCumulative.ToString();
|
|
dt4.Rows[i]["AnnualAccumulation"] = passFirstTimeModel1.AnnualAccumulation.ToString();
|
|
|
|
|
|
DataRow dt5 = dt4.Rows[i];
|
|
passFirstTimeModel2.Decomposition1 = dt4.Rows[i]["ClassName"].ToString();
|
|
passFirstTimeModel2.Decomposition2 = "不良率";
|
|
var data = NGCount(new List<string> {
|
|
"Week1", "Week2", "Week3", "Week4", "Week5", "Week6",
|
|
"Month1",
|
|
"Month2",
|
|
"Month3",
|
|
"Month4",
|
|
"Month5",
|
|
"Month6",
|
|
"Month7",
|
|
"Month8",
|
|
"Month9",
|
|
"Month10",
|
|
"Month11",
|
|
"Month12","MonthlyCumulative","AnnualAccumulation"},
|
|
dt1,dt3, dt5);
|
|
|
|
#region 周数据
|
|
|
|
passFirstTimeModel2.Week1 = data["Week1"].V1;
|
|
passFirstTimeModel2.Week2 = data["Week2"].V1;
|
|
passFirstTimeModel2.Week3 = data["Week3"].V1;
|
|
passFirstTimeModel2.Week4 = data["Week4"].V1;
|
|
passFirstTimeModel2.Week5 = data["Week5"].V1;
|
|
passFirstTimeModel2.Week6 = data["Week6"].V1;
|
|
#endregion
|
|
|
|
#region 月数据
|
|
passFirstTimeModel2.Month1 = data["Month1"].V1;
|
|
passFirstTimeModel2.Month2 = data["Month2"].V1;
|
|
passFirstTimeModel2.Month3 = data["Month3"].V1;
|
|
passFirstTimeModel2.Month4 = data["Month4"].V1;
|
|
passFirstTimeModel2.Month5 = data["Month5"].V1;
|
|
passFirstTimeModel2.Month6 = data["Month6"].V1;
|
|
passFirstTimeModel2.Month7 = data["Month7"].V1;
|
|
passFirstTimeModel2.Month8 = data["Month8"].V1;
|
|
passFirstTimeModel2.Month9 = data["Month9"].V1;
|
|
passFirstTimeModel2.Month10 = data["Month10"].V1;
|
|
passFirstTimeModel2.Month11 = data["Month11"].V1;
|
|
passFirstTimeModel2.Month12 = data["Month12"].V1;
|
|
#endregion
|
|
|
|
#region 汇总
|
|
|
|
passFirstTimeModel2.MonthlyCumulative = data["MonthlyCumulative"].V1;
|
|
passFirstTimeModel2.AnnualAccumulation = data["AnnualAccumulation"].V1;
|
|
passFirstTimeModel.Add(passFirstTimeModel1);
|
|
passFirstTimeModel.Add(passFirstTimeModel2);
|
|
#endregion
|
|
|
|
}
|
|
//合计信息
|
|
#region 合计信息
|
|
PassFirstTimeModel passFirstTimeModel3 = new PassFirstTimeModel();
|
|
PassFirstTimeModel passFirstTimeModel4 = new PassFirstTimeModel();
|
|
PassFirstTimeModel passFirstTimeModel5 = new PassFirstTimeModel();
|
|
PassFirstTimeModel passFirstTimeModel6 = new PassFirstTimeModel();
|
|
|
|
passFirstTimeModel3.Decomposition1 = "合计";
|
|
passFirstTimeModel3.Decomposition2 = "异常数量";
|
|
passFirstTimeModel3.Week1 = dt2.Rows[0]["Week1"].ToDecimal();
|
|
passFirstTimeModel3.Week2 = dt2.Rows[0]["Week2"].ToDecimal();
|
|
passFirstTimeModel3.Week3 = dt2.Rows[0]["Week3"].ToDecimal();
|
|
passFirstTimeModel3.Week4 = dt2.Rows[0]["Week4"].ToDecimal();
|
|
passFirstTimeModel3.Week5 = dt2.Rows[0]["Week5"].ToDecimal();
|
|
passFirstTimeModel3.Week6 = dt2.Rows[0]["Week6"].ToDecimal();
|
|
passFirstTimeModel3.MonthlyCumulative = dt2.Rows[0]["MonthlyCumulative"].ToDecimal();
|
|
passFirstTimeModel3.Month1 = dt2.Rows[0]["Month1"].ToDecimal();
|
|
passFirstTimeModel3.Month2 = dt2.Rows[0]["Month2"].ToDecimal();
|
|
passFirstTimeModel3.Month3 = dt2.Rows[0]["Month3"].ToDecimal();
|
|
passFirstTimeModel3.Month4 = dt2.Rows[0]["Month4"].ToDecimal();
|
|
passFirstTimeModel3.Month5 = dt2.Rows[0]["Month5"].ToDecimal();
|
|
passFirstTimeModel3.Month6 = dt2.Rows[0]["Month6"].ToDecimal();
|
|
passFirstTimeModel3.Month7 = dt2.Rows[0]["Month7"].ToDecimal();
|
|
passFirstTimeModel3.Month8 = dt2.Rows[0]["Month8"].ToDecimal();
|
|
passFirstTimeModel3.Month9 = dt2.Rows[0]["Month9"].ToDecimal();
|
|
passFirstTimeModel3.Month10 = dt2.Rows[0]["Month10"].ToDecimal();
|
|
passFirstTimeModel3.Month11 = dt2.Rows[0]["Month12"].ToDecimal();
|
|
passFirstTimeModel3.Month12 = dt2.Rows[0]["Month12"].ToDecimal();
|
|
passFirstTimeModel3.AnnualAccumulation = dt2.Rows[0]["AnnualAccumulation"].ToDecimal();
|
|
|
|
passFirstTimeModel4.Decomposition1 = "合计";
|
|
passFirstTimeModel4.Decomposition2 = "来料数量";
|
|
passFirstTimeModel4.Week1 = dt1.Rows[0]["Week1"].ToDecimal();
|
|
passFirstTimeModel4.Week2 = dt1.Rows[0]["Week2"].ToDecimal();
|
|
passFirstTimeModel4.Week3 = dt1.Rows[0]["Week3"].ToDecimal();
|
|
passFirstTimeModel4.Week4 = dt1.Rows[0]["Week4"].ToDecimal();
|
|
passFirstTimeModel4.Week5 = dt1.Rows[0]["Week5"].ToDecimal();
|
|
passFirstTimeModel4.Week6 = dt1.Rows[0]["Week6"].ToDecimal();
|
|
passFirstTimeModel4.MonthlyCumulative = dt1.Rows[0]["MonthlyCumulative"].ToDecimal();
|
|
passFirstTimeModel4.Month1 = dt1.Rows[0]["Month1"].ToDecimal();
|
|
passFirstTimeModel4.Month2 = dt1.Rows[0]["Month2"].ToDecimal();
|
|
passFirstTimeModel4.Month3 = dt1.Rows[0]["Month3"].ToDecimal();
|
|
passFirstTimeModel4.Month4 = dt1.Rows[0]["Month4"].ToDecimal();
|
|
passFirstTimeModel4.Month5 = dt1.Rows[0]["Month5"].ToDecimal();
|
|
passFirstTimeModel4.Month6 = dt1.Rows[0]["Month6"].ToDecimal();
|
|
passFirstTimeModel4.Month7 = dt1.Rows[0]["Month7"].ToDecimal();
|
|
passFirstTimeModel4.Month8 = dt1.Rows[0]["Month8"].ToDecimal();
|
|
passFirstTimeModel4.Month9 = dt1.Rows[0]["Month9"].ToDecimal();
|
|
passFirstTimeModel4.Month10 = dt1.Rows[0]["Month10"].ToDecimal();
|
|
passFirstTimeModel4.Month11 = dt1.Rows[0]["Month12"].ToDecimal();
|
|
passFirstTimeModel4.Month12 = dt1.Rows[0]["Month12"].ToDecimal();
|
|
passFirstTimeModel4.AnnualAccumulation = dt1.Rows[0]["AnnualAccumulation"].ToDecimal();
|
|
|
|
|
|
var data1 = NGCount(new List<string> {
|
|
"Week1", "Week2", "Week3", "Week4", "Week5", "Week6",
|
|
"Month1",
|
|
"Month2",
|
|
"Month3",
|
|
"Month4",
|
|
"Month5",
|
|
"Month6",
|
|
"Month7",
|
|
"Month8",
|
|
"Month9",
|
|
"Month10",
|
|
"Month11",
|
|
"Month12","MonthlyCumulative","AnnualAccumulation"},
|
|
dt1, dt3, dt2);
|
|
|
|
#region 周数据
|
|
passFirstTimeModel5.Decomposition1 = "合计";
|
|
passFirstTimeModel5.Decomposition2 = "不良率";
|
|
passFirstTimeModel5.Week1 = data1["Week1"].V1;
|
|
passFirstTimeModel5.Week2 = data1["Week2"].V1;
|
|
passFirstTimeModel5.Week3 = data1["Week3"].V1;
|
|
passFirstTimeModel5.Week4 = data1["Week4"].V1;
|
|
passFirstTimeModel5.Week5 = data1["Week5"].V1;
|
|
passFirstTimeModel5.Week6 = data1["Week6"].V1;
|
|
#endregion
|
|
|
|
#region 月数据
|
|
passFirstTimeModel5.Month1 = data1["Month1"].V1;
|
|
passFirstTimeModel5.Month2 = data1["Month2"].V1;
|
|
passFirstTimeModel5.Month3 = data1["Month3"].V1;
|
|
passFirstTimeModel5.Month4 = data1["Month4"].V1;
|
|
passFirstTimeModel5.Month5 = data1["Month5"].V1;
|
|
passFirstTimeModel5.Month6 = data1["Month6"].V1;
|
|
passFirstTimeModel5.Month7 = data1["Month7"].V1;
|
|
passFirstTimeModel5.Month8 = data1["Month8"].V1;
|
|
passFirstTimeModel5.Month9 = data1["Month9"].V1;
|
|
passFirstTimeModel5.Month10 = data1["Month10"].V1;
|
|
passFirstTimeModel5.Month11 = data1["Month11"].V1;
|
|
passFirstTimeModel5.Month12 = data1["Month12"].V1;
|
|
#endregion
|
|
|
|
#region 汇总
|
|
|
|
passFirstTimeModel5.MonthlyCumulative = data1["MonthlyCumulative"].V1;
|
|
passFirstTimeModel5.AnnualAccumulation = data1["AnnualAccumulation"].V1;
|
|
|
|
#endregion
|
|
|
|
passFirstTimeModel6.Decomposition1 = "";
|
|
passFirstTimeModel6.Decomposition2 = "待判数量";
|
|
passFirstTimeModel6.Week1 = dt3.Rows[0]["Week1"].ToDecimal();
|
|
passFirstTimeModel6.Week2 = dt3.Rows[0]["Week2"].ToDecimal();
|
|
passFirstTimeModel6.Week3 = dt3.Rows[0]["Week3"].ToDecimal();
|
|
passFirstTimeModel6.Week4 = dt3.Rows[0]["Week4"].ToDecimal();
|
|
passFirstTimeModel6.Week5 = dt3.Rows[0]["Week5"].ToDecimal();
|
|
passFirstTimeModel6.Week6 = dt3.Rows[0]["Week6"].ToDecimal();
|
|
passFirstTimeModel6.MonthlyCumulative = dt3.Rows[0]["MonthlyCumulative"].ToDecimal();
|
|
passFirstTimeModel6.Month1 = dt3.Rows[0]["Month1"].ToDecimal();
|
|
passFirstTimeModel6.Month2 = dt3.Rows[0]["Month2"].ToDecimal();
|
|
passFirstTimeModel6.Month3 = dt3.Rows[0]["Month3"].ToDecimal();
|
|
passFirstTimeModel6.Month4 = dt3.Rows[0]["Month4"].ToDecimal();
|
|
passFirstTimeModel6.Month5 = dt3.Rows[0]["Month5"].ToDecimal();
|
|
passFirstTimeModel6.Month6 = dt3.Rows[0]["Month6"].ToDecimal();
|
|
passFirstTimeModel6.Month7 = dt3.Rows[0]["Month7"].ToDecimal();
|
|
passFirstTimeModel6.Month8 = dt3.Rows[0]["Month8"].ToDecimal();
|
|
passFirstTimeModel6.Month9 = dt3.Rows[0]["Month9"].ToDecimal();
|
|
passFirstTimeModel6.Month10 = dt3.Rows[0]["Month10"].ToDecimal();
|
|
passFirstTimeModel6.Month11 = dt3.Rows[0]["Month12"].ToDecimal();
|
|
passFirstTimeModel6.Month12 = dt3.Rows[0]["Month12"].ToDecimal();
|
|
passFirstTimeModel6.AnnualAccumulation = dt3.Rows[0]["AnnualAccumulation"].ToDecimal();
|
|
|
|
|
|
|
|
passFirstTimeModel.Add(passFirstTimeModel3);
|
|
passFirstTimeModel.Add(passFirstTimeModel4);
|
|
passFirstTimeModel.Add(passFirstTimeModel5);
|
|
passFirstTimeModel.Add(passFirstTimeModel6);
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
return passFirstTimeModel.ToJson();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
public DataTable ExportAll3(string DateNow)
|
|
{
|
|
string date = DateNow;
|
|
var dates = date.ToDate();
|
|
var daysMonth = dates.ToString("MM");
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
var firstDayofYear = new DateTime(dates.Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayofNextYear = new DateTime(dates.Year + 1, 1, 1).ToString("yyyy-MM-dd");
|
|
int month = dates.Month;
|
|
|
|
|
|
#region [SQL]
|
|
|
|
|
|
|
|
#region IncomingMterialssql 来料数量
|
|
string incomingMterialssql = $@"SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ1
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode) AS ASNCode,
|
|
F.BatchCode,
|
|
SUM(A.Quantity) AS InvBatcgQty,
|
|
COALESCE(D.MUSER, E.MUSER) AS VenCode,
|
|
COALESCE(D.MUSERName, E.MUSERName) AS VENNAME,
|
|
CONVERT(DATE, a.MTIME) AS CHUJIANSHIJIAN -- 直接转换为日期,避免重复计算
|
|
into #tableMJ2
|
|
FROM
|
|
ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN
|
|
ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN
|
|
ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN
|
|
ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN
|
|
ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN
|
|
ICSInspection g WITH (NOLOCK) ON g.LotNo = a.LotNo AND g.WorkPoint = a.WorkPoint
|
|
WHERE
|
|
(a.BusinessCode = '1' OR a.BusinessCode = '9')
|
|
AND g.id IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
AND CONVERT(DATE, a.MTIME) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY
|
|
a.InvCode,
|
|
COALESCE(D.ASNCode, E.OASNCode),
|
|
F.BatchCode,
|
|
COALESCE(D.MUSER, E.MUSER),
|
|
COALESCE(D.MUSERName, E.MUSERName),
|
|
CONVERT(DATE, a.MTIME),
|
|
A.MUSERName,
|
|
A.TransCode
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo WHERE CONVERT(DATE, a.FirstCheckTime) BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
|
|
UNION ALL
|
|
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ1
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS FistNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, CONVERT(DATE, a.FirstCheckTime) CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
WHERE CONVERT(DATE, a.FirstCheckTime) BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
UNION ALL
|
|
SELECT InvCode,'' ZZJG,CHUJIANSHIJIAN from #tableMJ2
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(FistNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(FistNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.FistNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.FistNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(FistNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1 DROP TABLE #tableMJ1 DROP TABLE #tableMJ2
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 复判ng sencondNgsql
|
|
string sencondNgsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS SecondNG, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}' and ZZJG='NG' AND BRGDesc='复判NG'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(SecondNG) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(SecondNG) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.SecondNG,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.SecondNG,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(SecondNG) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
|
|
#endregion
|
|
|
|
#region 待判中 underReRudgmentsql
|
|
string underReRudgmentsql = $@"SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Week'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1) AS Week
|
|
INTO #Table1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
|
|
)
|
|
b where CHUJIANSHIJIAN BETWEEN '{firstDayOfMonth}' AND '{lastDayOfMonth}' and ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否'
|
|
GROUP BY CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,CHUJIANSHIJIAN))%DATEPART(WEEK,DATEADD(DAY,-1,'{firstDayOfMonth}'))+1)
|
|
order by Week
|
|
|
|
SELECT DISTINCT isnull(COUNT(*),0) AS UnderReRudgment, 'Month'+CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))) AS Month
|
|
INTO #MothTable1
|
|
FROM ( SELECT
|
|
a.InvCode ,a.IQCGroupHeaderResult ZZJG, FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
case when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,a.Result JYXJG,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
--LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail WITH (NOLOCK)) ZB ON ZB.CheckNo=A.CheckNo
|
|
|
|
)
|
|
b where ZZJG='NG' AND BRGDesc='复判NG' AND JYXJG='NG' AND SFJA='否' and CHUJIANSHIJIAN BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY DATEPART(MONTH,DATEADD(DAY,-1,CHUJIANSHIJIAN))
|
|
|
|
SELECT SUM(UnderReRudgment) AS WeekNGCount INTO #Table2
|
|
FROM #Table1
|
|
SELECT SUM(UnderReRudgment) AS MonthNGCount INTO #MothTable2
|
|
FROM #MothTable1
|
|
|
|
SELECT b.UnderReRudgment,a.Num WeeK INTO #Table3
|
|
FROM [ICSWeek] a
|
|
left JOIN #Table1 b ON a.Num=b.Week
|
|
UNION
|
|
SELECT b.UnderReRudgment,a.ENum FROM [ICSMonth] a
|
|
left JOIN #MothTable1 b ON a.ENum=b.Month
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Week
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT (select * from #Table2) MonthlyCumulative,(select * from #MothTable2) AnnualAccumulation, * FROM #Table3
|
|
PIVOT ( SUM(UnderReRudgment) FOR Week IN ('+
|
|
@cols+') )a
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
#endregion
|
|
|
|
#region 分类不良数量 calssNGsql
|
|
var calssNGsql = $@"DECLARE @M int = {month}
|
|
|
|
SELECT ClassName,
|
|
'0' MonthlyCumulative,
|
|
'0' AnnualAccumulation,
|
|
sum(case when Month = 1 then Rec else 0 end) Month1Rec,
|
|
sum(case when Month = 1 then Ng else 0 end) Month1,
|
|
sum(case when Month = 2 then Rec else 0 end) Month2Rec,
|
|
sum(case when Month = 2 then Ng else 0 end) Month2,
|
|
sum(case when Month = 3 then Rec else 0 end) Month3Rec,
|
|
sum(case when Month = 3 then Ng else 0 end) Month3,
|
|
sum(case when Month = 4 then Rec else 0 end) Month4Rec,
|
|
sum(case when Month = 4 then Ng else 0 end) Month4,
|
|
sum(case when Month = 5 then Rec else 0 end) Month5Rec,
|
|
sum(case when Month = 5 then Ng else 0 end) Month5,
|
|
sum(case when Month = 6 then Rec else 0 end) Month6Rec,
|
|
sum(case when Month = 6 then Ng else 0 end) Month6,
|
|
sum(case when Month = 7 then Rec else 0 end) Month7Rec,
|
|
sum(case when Month = 7 then Ng else 0 end) Month7,
|
|
sum(case when Month = 8 then Rec else 0 end) Month8Rec,
|
|
sum(case when Month = 8 then Ng else 0 end) Month8,
|
|
sum(case when Month = 9 then Rec else 0 end) Month9Rec,
|
|
sum(case when Month = 9 then Ng else 0 end) Month9,
|
|
sum(case when Month = 10 then Rec else 0 end) Month10Rec,
|
|
sum(case when Month = 10 then Ng else 0 end) Month10,
|
|
sum(case when Month = 11 then Rec else 0 end) Month11Rec,
|
|
sum(case when Month = 11 then Ng else 0 end) Month11,
|
|
sum(case when Month = 12 then Rec else 0 end) Month12Rec,
|
|
sum(case when Month = 12 then Ng else 0 end) Month12,
|
|
sum(case when Month = @M and week = 1 then Rec else 0 end) Week1Rec,
|
|
sum(case when Month = @M and week = 1 then Ng else 0 end) Week1,
|
|
sum(case when Month = @M and week = 2 then Rec else 0 end) Week2Rec,
|
|
sum(case when Month = @M and week = 2 then Ng else 0 end) Week2,
|
|
sum(case when Month = @M and week = 3 then Rec else 0 end) Week3Rec,
|
|
sum(case when Month = @M and week = 3 then Ng else 0 end) Week3,
|
|
sum(case when Month = @M and week = 4 then Rec else 0 end) Week4Rec,
|
|
sum(case when Month = @M and week = 4 then Ng else 0 end) Week4,
|
|
sum(case when Month = @M and week = 5 then Rec else 0 end) Week5Rec,
|
|
sum(case when Month = @M and week = 5 then Ng else 0 end) Week5,
|
|
sum(case when Month = @M and week = 6 then Rec else 0 end) Week6Rec,
|
|
sum(case when Month = @M and week = 6 then Ng else 0 end) Week6
|
|
|
|
from (
|
|
SELECT ClassName,Rec,NG,
|
|
dateName(month, DT) Month,
|
|
CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,DT))%DATEPART(WEEK,DATEADD(DAY,-1,DATEADD(month, DATEDIFF(month, 0, DT), 0)))+1) Week
|
|
|
|
|
|
From(
|
|
SELECT count(1) Rec, sum((case when a.SQEEngineerResult='NG' and a.IQCGroupHeaderResult='NG' then 1 else 0 end)) as NG,
|
|
d.ClassName,
|
|
CAST(a.FirstCheckTime AS DATE) DT
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
LEFT JOIN (SELECT DISTINCT CheckNo,MUSERName,CONVERT(NVARCHAR(10),MTIME,102) TIME FROM IcsMatCheckResultDetail) ZB ON ZB.CheckNo=A.CheckNo
|
|
WHERE a.FirstCheckTime BETWEEN '{firstDayofYear}' AND '{firstDayofNextYear}'
|
|
GROUP BY d.ClassName, CAST(a.FirstCheckTime AS DATE)
|
|
)a)a group by classname";
|
|
|
|
#endregion
|
|
#endregion
|
|
var dt1 = SqlHelper.CmdExecuteDataTable(incomingMterialssql);
|
|
var dt2 = SqlHelper.CmdExecuteDataTable(sencondNgsql);
|
|
var dt3 = SqlHelper.CmdExecuteDataTable(underReRudgmentsql);
|
|
var dt4 = SqlHelper.CmdExecuteDataTable(calssNGsql);
|
|
|
|
// 创建一个新的 DataTable
|
|
DataTable table = new DataTable();
|
|
|
|
|
|
#region 添加列到 DataTable
|
|
table.Columns.Add("材料类别", typeof(string));
|
|
table.Columns.Add("类别", typeof(string));
|
|
// 添加月份和周次的列
|
|
string[] weeksInJanuary = { $"{daysMonth}月第1周", $"{daysMonth}月第2周", $"{daysMonth}月第3周", $"{daysMonth}月第4周", $"{daysMonth}月第5周", $"{daysMonth}月第6周" };
|
|
|
|
for (int j = 0; j < weeksInJanuary.Length; j++)
|
|
{
|
|
table.Columns.Add(weeksInJanuary[j], typeof(string));
|
|
}
|
|
|
|
table.Columns.Add("当月累计", typeof(string));
|
|
|
|
// 添加月份的列
|
|
string[] months = { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" };
|
|
|
|
for (int j = 0; j < months.Length; j++)
|
|
{
|
|
table.Columns.Add(months[j], typeof(string));
|
|
}
|
|
|
|
table.Columns.Add("年度累计", typeof(string));
|
|
|
|
#endregion
|
|
|
|
#region 循环添加数据
|
|
for (int i = 0; i < dt4.Rows.Count; i++)
|
|
{
|
|
DataRow row1 = table.NewRow();
|
|
DataRow row2 = table.NewRow();
|
|
row1["材料类别"] = dt4.Rows[i]["ClassName"].ToString();
|
|
row1["类别"] = "异常数量";
|
|
row2["材料类别"] = dt4.Rows[i]["ClassName"].ToString();
|
|
row2["类别"] = "不良率";
|
|
for (int j = 0; j < weeksInJanuary.Length; j++)
|
|
{
|
|
string week = weeksInJanuary[j];
|
|
int k = j + 1;
|
|
row1[week] = dt4.Rows[i]["Week" + k] ;
|
|
}
|
|
|
|
var monthlyCumulative = dt4.Rows[i]["Week1"].ToDecimal() + dt4.Rows[i]["Week2"].ToDecimal() +
|
|
dt4.Rows[i]["Week3"].ToDecimal() + dt4.Rows[i]["Week4"].ToDecimal() + dt4.Rows[i]["Week5"].ToDecimal() +
|
|
dt4.Rows[i]["Week6"].ToDecimal();
|
|
var annualAccumulation = dt4.Rows[i]["Month1"].ToDecimal() + dt4.Rows[i]["Month2"].ToDecimal() +
|
|
dt4.Rows[i]["Month3"].ToDecimal() + dt4.Rows[i]["Month4"].ToDecimal() + dt4.Rows[i]["Month5"].ToDecimal() +
|
|
dt4.Rows[i]["Month6"].ToDecimal() + dt4.Rows[i]["Month7"].ToDecimal() + dt4.Rows[i]["Month8"].ToDecimal() +
|
|
dt4.Rows[i]["Month9"].ToDecimal() + dt4.Rows[i]["Month10"].ToDecimal() + dt4.Rows[i]["Month12"].ToDecimal() +
|
|
dt4.Rows[i]["Month12"].ToDecimal();
|
|
row1["当月累计"] = monthlyCumulative;
|
|
for (int j = 0; j < months.Length; j++)
|
|
{
|
|
string monthIndex = months[j];
|
|
int k = j + 1;
|
|
row1[monthIndex] = dt4.Rows[i]["Month" + k];
|
|
}
|
|
row1["年度累计"] = monthlyCumulative;
|
|
|
|
dt4.Rows[i]["MonthlyCumulative"] = monthlyCumulative.ToString();
|
|
dt4.Rows[i]["AnnualAccumulation"] = annualAccumulation.ToString();
|
|
|
|
|
|
DataRow dt5 = dt4.Rows[i];
|
|
|
|
var data = NGCount(new List<string> {
|
|
"Week1", "Week2", "Week3", "Week4", "Week5", "Week6",
|
|
"Month1",
|
|
"Month2",
|
|
"Month3",
|
|
"Month4",
|
|
"Month5",
|
|
"Month6",
|
|
"Month7",
|
|
"Month8",
|
|
"Month9",
|
|
"Month10",
|
|
"Month11",
|
|
"Month12","MonthlyCumulative","AnnualAccumulation"},
|
|
dt1, dt3, dt5);
|
|
|
|
#region 周数据
|
|
for (int j = 0; j < weeksInJanuary.Length; j++)
|
|
{
|
|
string week = weeksInJanuary[j];
|
|
int k = j + 1;
|
|
row2[week] = data["Week" + k].V1 + "%";
|
|
}
|
|
#endregion
|
|
row2["当月累计"] = data["MonthlyCumulative"].V1 + "%";
|
|
#region 月数据
|
|
for (int j = 0; j < months.Length; j++)
|
|
{
|
|
string monthIndex = months[j];
|
|
int k = j + 1;
|
|
row2[monthIndex] = data["Month" + k].V1 + "%";
|
|
}
|
|
#endregion
|
|
|
|
#region 汇总
|
|
|
|
row2["年度累计"] = data["AnnualAccumulation"].V1;
|
|
|
|
table.Rows.Add(row1);
|
|
table.Rows.Add(row2);
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
#region 合计信息
|
|
DataRow row3 = table.NewRow();
|
|
DataRow row4 = table.NewRow();
|
|
DataRow row5 = table.NewRow();
|
|
DataRow row6 = table.NewRow();
|
|
#region 合计信息
|
|
var data1 = NGCount(new List<string> {
|
|
"Week1", "Week2", "Week3", "Week4", "Week5", "Week6",
|
|
"Month1",
|
|
"Month2",
|
|
"Month3",
|
|
"Month4",
|
|
"Month5",
|
|
"Month6",
|
|
"Month7",
|
|
"Month8",
|
|
"Month9",
|
|
"Month10",
|
|
"Month11",
|
|
"Month12","MonthlyCumulative","AnnualAccumulation"},
|
|
dt1, dt3, dt2);
|
|
|
|
row3["材料类别"] = "合计";
|
|
row3["类别"] = "异常数量";
|
|
row4["材料类别"] = "合计";
|
|
row4["类别"] = "来料数量";
|
|
row5["材料类别"] = "合计";
|
|
row5["类别"] = "不良率";
|
|
row6["材料类别"] = " ";
|
|
row6["类别"] = "待判数量";
|
|
for (int j = 0; j < weeksInJanuary.Length; j++)
|
|
{
|
|
string week = weeksInJanuary[j];
|
|
int k = j + 1;
|
|
row3[week] = dt2.Rows[0]["Week" + k] ;
|
|
row4[week] = dt1.Rows[0]["Week" + k] ;
|
|
row5[week] = data1["Week" + k].V1 + "%";
|
|
row6[week] = dt3.Rows[0]["Week" + k].ToDecimal() ;
|
|
}
|
|
for (int j = 0; j < months.Length; j++)
|
|
{
|
|
string monthIndex = months[j];
|
|
int k = j + 1;
|
|
row3[monthIndex] = dt2.Rows[0]["Month" + k];
|
|
row4[monthIndex] = dt1.Rows[0]["Month" + k] ;
|
|
row5[monthIndex] = data1["Month" + k].V1 + "%";
|
|
row6[monthIndex] = dt3.Rows[0]["Month" + k].ToDecimal() ;
|
|
}
|
|
|
|
row3["当月累计"] = dt2.Rows[0]["MonthlyCumulative"].ToDecimal() ;
|
|
row3["年度累计"] = dt2.Rows[0]["AnnualAccumulation"].ToDecimal() ;
|
|
row4["当月累计"] = dt1.Rows[0]["MonthlyCumulative"].ToDecimal() ;
|
|
row4["年度累计"] = dt1.Rows[0]["AnnualAccumulation"].ToDecimal() ;
|
|
row5["当月累计"] = data1["MonthlyCumulative"].V1 + "%";
|
|
row5["年度累计"] = data1["AnnualAccumulation"].V1 + "%";
|
|
row6["当月累计"] = dt3.Rows[0]["MonthlyCumulative"].ToDecimal() ;
|
|
row6["年度累计"] = dt3.Rows[0]["AnnualAccumulation"].ToDecimal() ;
|
|
table.Rows.Add(row3);
|
|
table.Rows.Add(row4);
|
|
table.Rows.Add(row5);
|
|
table.Rows.Add(row6);
|
|
#endregion
|
|
return table;
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
private Dictionary<string, dynamic> NGCount(List<string> weeks,
|
|
DataTable dt1, DataTable dt2, DataTable dt3)
|
|
{
|
|
Dictionary<string, dynamic> result = new Dictionary<string, dynamic>();
|
|
|
|
foreach (var item in weeks)
|
|
{
|
|
var tmp1 = dt1.Rows[0][item].ToDecimal();
|
|
var tmp2 = dt2.Rows[0][item].ToDecimal();
|
|
var tmp3 = dt3.Rows[0][item].ToDecimal();
|
|
var v1 = tmp1 == 0 ? 0 : Math.Round(tmp3/ (tmp1 - tmp2) * 100, 1);
|
|
|
|
|
|
result.Add(item, new
|
|
{
|
|
V1 = v1
|
|
|
|
});
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private Dictionary<string, dynamic> NGCount(List<string> weeks,
|
|
DataTable dt1, DataTable dt2, DataRow dt3)
|
|
{
|
|
Dictionary<string, dynamic> result = new Dictionary<string, dynamic>();
|
|
|
|
foreach (var item in weeks)
|
|
{
|
|
var tmp1 = dt1.Rows[0][item].ToDecimal();
|
|
var tmp2 = dt2.Rows[0][item].ToDecimal();
|
|
var tmp3 = dt3[item].ToDecimal();
|
|
var v1 = tmp1 == 0 ? 0 : Math.Round(tmp3 / (tmp1 - tmp2) * 100, 1);
|
|
|
|
|
|
result.Add(item, new
|
|
{
|
|
V1 = v1
|
|
|
|
});
|
|
}
|
|
return result;
|
|
}
|
|
public DataTable ExportAll(string DateNow)
|
|
{
|
|
string date = DateNow;
|
|
var dates = date.ToDate();
|
|
var daysMonth = dates.ToString("MM");
|
|
var Year = new DateTime(dates.Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var WYear = new DateTime(dates.AddYears(1).Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
string sql = @"
|
|
|
|
SELECT DISTINCT COUNT(*) AS GS, BRGDesc, A.BadReasonDesc,'周' + CONVERT(NVARCHAR(20), DATEPART(WEEK, DATEADD(DAY, -1, CHUJIANSHIJIAN)) % DATEPART(WEEK, DATEADD(DAY, -1, '{0}')) + 1) AS ZB
|
|
|
|
INTO #Table1 FROM (SELECT DISTINCT
|
|
|
|
CASE when a.SQEEngineerResult = 'NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
|
|
CASE when a.SQEEngineerResult = 'NG' THEN '复判NG' ELSE BLXX1.BadReasonDesc END AS BadReasonDesc,--不良原因
|
|
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
FORMAT(CONVERT(datetime, a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result = 'OK' OR(a.Result = 'NG' AND a.IsCheckComplete = '是') THEN '是'
|
|
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
|
|
LEFT JOIN ICSVendor c on a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
|
|
LEFT JOIN ICSInventory d on a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode = A.BCGCode
|
|
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode = A.BRGCode
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
SELECT DISTINCT
|
|
'' BRGDesc,'' BadReasonDesc,'' BadDesc,NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA,'' CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID = EE.ExtensionID
|
|
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno = G.lotno
|
|
WHERE(a.BusinessCode = '1' or a.BusinessCode = '9') AND G.lotno IS NOT NULL
|
|
and a.MUSER <> 'admin'
|
|
GROUP BY a.InvCode,C.InvName,C.InvStd, REPLACE(C.ClassName, '编码规则', ''),ISNULL(D.ASNCode, E.OASNCode),F.BatchCode,
|
|
ISNULL(D.MUSER, E.MUSER),ISNULL(D.MUSERName, E.MUSERName),FORMAT(CONVERT(datetime, a.MTIME, 120), 'yyyy/MM/dd'),A.MUSERName,A.TransCode
|
|
) A WHERE 1 = 1 AND A.BRGDesc <> '' and A.BRGDesc IS NOT NULL AND A.BRGDesc <> '复判NG' AND A.SFJA = '是' AND A.BadReasonDesc IS NOT NULL
|
|
|
|
AND CHUJIANSHIJIAN BETWEEN '{0}' AND '{1}'
|
|
|
|
GROUP BY BRGDesc,A.BadReasonDesc,CONVERT(NVARCHAR(20), DATEPART(WEEK, DATEADD(DAY, -1, CHUJIANSHIJIAN)) % DATEPART(WEEK, DATEADD(DAY, -1, '{0}')) + 1)
|
|
|
|
|
|
SELECT DISTINCT COUNT(*) AS GS, BRGDesc, A.BadReasonDesc,'月' + CONVERT(NVARCHAR(20), DATEPART(MONTH, DATEADD(DAY, -1, CHUJIANSHIJIAN))) AS ZB
|
|
|
|
INTO #MothTable1 FROM (SELECT DISTINCT
|
|
|
|
CASE when a.SQEEngineerResult = 'NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
|
|
CASE when a.SQEEngineerResult = 'NG' THEN '复判NG' ELSE BLXX1.BadReasonDesc END AS BadReasonDesc,--不良原因
|
|
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
FORMAT(CONVERT(datetime, a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result = 'OK' OR(a.Result = 'NG' AND a.IsCheckComplete = '是') THEN '是'
|
|
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
|
|
LEFT JOIN ICSVendor c on a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
|
|
LEFT JOIN ICSInventory d on a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode = A.BCGCode
|
|
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode = A.BRGCode
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
SELECT DISTINCT
|
|
'' BRGDesc,'' BadReasonDesc,'' BadDesc,NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA,''CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID = EE.ExtensionID
|
|
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno = G.lotno
|
|
WHERE(a.BusinessCode = '1' or a.BusinessCode = '9') AND G.lotno IS NOT NULL
|
|
and a.MUSER <> 'admin'
|
|
GROUP BY a.InvCode,C.InvName,C.InvStd, REPLACE(C.ClassName, '编码规则', ''),ISNULL(D.ASNCode, E.OASNCode),F.BatchCode,
|
|
ISNULL(D.MUSER, E.MUSER),ISNULL(D.MUSERName, E.MUSERName),FORMAT(CONVERT(datetime, a.MTIME, 120), 'yyyy/MM/dd'),A.MUSERName,A.TransCode
|
|
) A WHERE 1 = 1 AND A.BRGDesc <> '' and A.BRGDesc IS NOT NULL AND A.BRGDesc <> '复判NG' AND A.SFJA = '是' AND A.BadReasonDesc IS NOT NULL
|
|
|
|
AND CHUJIANSHIJIAN BETWEEN '{2}' AND '{3}'
|
|
|
|
GROUP BY BRGDesc,A.BadReasonDesc, DATEPART(MONTH, DATEADD(DAY, -1, CHUJIANSHIJIAN))
|
|
|
|
|
|
|
|
|
|
SELECT SUM(GS) AS HZcount, BRGDesc INTO #Table2 FROM #Table1 GROUP BY BRGDesc
|
|
|
|
SELECT SUM(GS) AS HZcount, BRGDesc INTO #MothTable2 FROM #MothTable1 GROUP BY BRGDesc
|
|
|
|
|
|
|
|
SELECT* INTO #Table3 FROM #Table1
|
|
UNION
|
|
SELECT b.GS,b.BRGDesc,b.BadReasonDesc,a.Num FROM[ICSMonth] a
|
|
LEFT JOIN #MothTable1 b ON a.Num=b.ZB
|
|
|
|
|
|
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' + dr.ZB
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') + ']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols = 'SELECT * INTO #Table4 FROM #Table3
|
|
|
|
PIVOT(SUM(GS) FOR ZB IN('+
|
|
|
|
@cols + ') )a orDER BY BRGDesc
|
|
|
|
|
|
SELECT ROW_NUMBER() OVER(order by CONVERT(DECIMAL(16, 1), ROUND(c.HZcount * 1.0 / (select sum(HZcount) from #MothTable2) * 100, 2)) desc)NUM, A.*,b.HZcount as ZBCount,C.HZcount as YBCount,CONVERT(nvarchar(20), CONVERT(DECIMAL(16,1),ROUND(c.HZcount*1.0/(select sum(HZcount) from #MothTable2) * 100, 2)))+''%''
|
|
AS Proportion, D.EATTRIBUTE1 as Improvementmeasures, D.EATTRIBUTE2 as Responsibledepartment FROM #Table4 A
|
|
LEFT JOIN #Table2 B ON A.BRGDesc=B.BRGDesc
|
|
LEFT JOIN #MothTable2 C ON A.BRGDesc=C.BRGDesc
|
|
LEFT JOIN ICSBadReason D ON A.BadReasonDesc = D.BadReasonDesc
|
|
|
|
Where A.BRGDesc is not NULL
|
|
ORDER BY CONVERT(DECIMAL(16, 1), ROUND(c.HZcount * 1.0 / (select sum(HZcount) from #MothTable2) * 100, 2)) DESC
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
|
|
DROP TABLE #Table1 DROP TABLE #Table2 DROP TABLE #Table3 DROP TABLE #MothTable2 DROP TABLE #MothTable1
|
|
";
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth, Year, WYear); ;
|
|
var dt=SqlHelper.GetDataTableBySql(sql);
|
|
string[] vs = new string[] { "不良描述", "占比(%)", "不良原因", "改善对策", "责任部门", $"{daysMonth}月第1周", $"{daysMonth}月第2周", $"{daysMonth}月第3周", $"{daysMonth}月第4周", $"{daysMonth}月第5周", $"{daysMonth}月第6周", "合计", "年度累计", "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" };
|
|
// 创建一个新的 DataTable
|
|
DataTable table = new DataTable();
|
|
for (int j = 0; j < vs.Length; j++)
|
|
{
|
|
table.Columns.Add(vs[j], typeof(string));
|
|
}
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
DataRow row1 = table.NewRow();
|
|
row1["不良描述"] = dt.Rows[i]["BRGDesc"].ToString();
|
|
row1["占比(%)"] = dt.Rows[i]["Proportion"].ToString();
|
|
row1["不良原因"] = dt.Rows[i]["BadReasonDesc"].ToString();
|
|
row1["改善对策"] = dt.Rows[i]["Improvementmeasures"].ToString();
|
|
row1["责任部门"] = dt.Rows[i]["Responsibledepartment"].ToString();
|
|
row1[$"{daysMonth}月第1周"] = dt.Columns.Contains("周1") ==false?"": dt.Rows[i]["周1"].ToString();
|
|
row1[$"{daysMonth}月第2周"] = dt.Columns.Contains("周2") == false ? "" : dt.Rows[i]["周2"].ToString();
|
|
row1[$"{daysMonth}月第3周"] = dt.Columns.Contains("周3") == false ? "" : dt.Rows[i]["周3"].ToString();
|
|
row1[$"{daysMonth}月第4周"] = dt.Columns.Contains("周4") == false ? "" : dt.Rows[i]["周4"].ToString();
|
|
row1[$"{daysMonth}月第5周"] = dt.Columns.Contains("周5") == false ? "" : dt.Rows[i]["周5"].ToString();
|
|
row1[$"{daysMonth}月第6周"] = dt.Columns.Contains("周6") == false ? "" : dt.Rows[i]["周6"].ToString();
|
|
row1["合计"] = dt.Rows[i]["ZBCount"].ToString();
|
|
row1["年度累计"] = dt.Rows[i]["YBCount"].ToString();
|
|
row1["1月"] = dt.Rows[i]["月1"] .ToString();
|
|
row1["2月"] = dt.Rows[i]["月2"] .ToString();
|
|
row1["3月"] = dt.Rows[i]["月3"] .ToString();
|
|
row1["4月"] = dt.Rows[i]["月4"] .ToString();
|
|
row1["5月"] = dt.Rows[i]["月5"] .ToString();
|
|
row1["6月"] = dt.Rows[i]["月6"] .ToString();
|
|
row1["7月"] = dt.Rows[i]["月7"] .ToString();
|
|
row1["8月"] = dt.Rows[i]["月8"] .ToString();
|
|
row1["9月"] = dt.Rows[i]["月9"] .ToString();
|
|
row1["10月"] = dt.Rows[i]["月10"].ToString();
|
|
row1["11月"] = dt.Rows[i]["月11"].ToString();
|
|
row1["12月"] = dt.Rows[i]["月12"].ToString();
|
|
table.Rows.Add(row1);
|
|
}
|
|
return table;
|
|
#endregion
|
|
|
|
}
|
|
|
|
public DataTable ExportAll4(string DateNow)
|
|
{
|
|
string date = DateNow;
|
|
var dates = date.ToDate();
|
|
var Year = new DateTime(dates.Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var WYear = new DateTime(dates.AddYears(1).Year, 1, 1).ToString("yyyy-MM-dd");
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
string sql = @"
|
|
SELECT DISTINCT * INTO #Temp1
|
|
FROM (SELECT DISTINCT
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME), 'yyyy-MM-dd') MTIME,
|
|
CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,DN.MTIME)))+'月' AS YB,
|
|
a.InvCode,
|
|
c.VenName,
|
|
d.InvName,
|
|
b.BLMX,
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
CASE when a.FinalResult IS NULL THEN a.IQCHeaderResult WHEN a.IQCHeaderResult IS NULL THEN
|
|
SQEEngineerResult WHEN SQEEngineerResult IS NULL THEN IQCGroupHeaderResult ELSE a.FinalResult END AS Result,
|
|
a.SQEEngineerRemark,
|
|
d.ClassName,
|
|
'第'+CONVERT(NVARCHAR(20),DATEPART(WEEK,DATEADD(DAY,-1,DN.MTIME))%DATEPART(WEEK,DATEADD(DAY,-1,'{0}'))+1)+'周' AS ZB,
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN ICSDeliveryNotice DN ON a.ASNCode=DN.ASNCode
|
|
LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY with (nolock) WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME,120), 'yyyy-MM-dd') MTIME,
|
|
'' AS ZB,
|
|
a.InvCode,
|
|
ISNULL(D.MUSERName,E.MUSERName) VENNAME,
|
|
C.InvName,
|
|
'' BLMX,
|
|
'' BRGDesc,'' BadDesc,
|
|
'' AS Result,
|
|
'' AS SQEEngineerRemark,
|
|
c.ClassName,
|
|
''AS YB,
|
|
NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno=G.lotno
|
|
inner JOIN ICSODeliveryNotice DN ON E.OASNCode=DN.OASNCode
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.lotno IS NOT NULL
|
|
and a.MUSER<>'admin'
|
|
|
|
) A WHERE 1=1 AND A.BRGDesc<>'' and A.BRGDesc IS NOT NULL AND A.BRGDesc='复判NG' AND A.SFJA='是'
|
|
AND MTIME BETWEEN '{0}' AND '{1}'
|
|
|
|
|
|
--SELECT * FROM #Temp1
|
|
|
|
SELECT DISTINCT * INTO #YearTemp1 FROM (SELECT DISTINCT
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME), 'yyyy-MM-dd') MTIME,
|
|
CONVERT(NVARCHAR(20),DATEPART(MONTH,DATEADD(DAY,-1,DN.MTIME)))+'月' AS YB,
|
|
a.InvCode,
|
|
c.VenName,
|
|
d.InvName,
|
|
b.BLMX,
|
|
CASE when a.SQEEngineerResult='NG' THEN '复判NG' ELSE BLXX.BRGDesc END AS BRGDesc,--不良描述
|
|
CASE when a.SQEEngineerResult IS NULL THEN a.IQCGroupHeaderResult WHEN a.IQCGroupHeaderResult IS NULL THEN
|
|
Result ELSE a.SQEEngineerResult END AS Result,
|
|
a.SQEEngineerRemark,
|
|
d.ClassName,
|
|
'' AS ZB,
|
|
BLFL.BadDesc,
|
|
a.IQCHeaderTime,
|
|
a.EATTRIBUTE1 SQEFA,
|
|
CASE WHEN a.Result='OK' OR (a.Result='NG' AND a.IsCheckComplete='是') THEN '是'
|
|
ELSE '否' END AS SFJA
|
|
FROM IcsMatCheckResult a
|
|
LEFT JOIN ICSVendor c on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN ICSDeliveryNotice DN ON a.ASNCode=DN.ASNCode
|
|
LEFT JOIN (SELECT CheckNo,STRING_AGG(BLMX, '; ') BLMX FROM VIEW_JY with (nolock) WHERE BLMX<>'' GROUP BY CheckNo) B ON a.CheckNo=b.CheckNo
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy-MM-dd') CHUJIANSHIJIAN,
|
|
FORMAT( CONVERT( datetime,DN.MTIME,120), 'yyyy-MM-dd') MTIME,
|
|
'' AS ZB,
|
|
a.InvCode,
|
|
ISNULL(D.MUSERName,E.MUSERName) VENNAME,
|
|
C.InvName,
|
|
'' BLMX,
|
|
'' BRGDesc,'' BadDesc,
|
|
'' AS Result,
|
|
'' AS SQEEngineerRemark,
|
|
c.ClassName,
|
|
''AS YB,
|
|
NULL IQCHeaderTime,'' SQEFA,
|
|
'' SFJA
|
|
FROM ICSWareHouseLotInfoLog a WITH(NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH(NOLOCK) on a.LotNo=b.LotNo
|
|
LEFT JOIN ICSInventory C WITH(NOLOCK) ON C.InvCode=A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH(NOLOCK) ON D.LotNo=A.LotNo
|
|
LEFT JOIN ICSOASNDetail E WITH(NOLOCK) ON E.LotNo=A.LotNo
|
|
LEFT JOIN ICSInventoryLoT EE WITH(NOLOCK) ON EE.LotNo=A.LotNo
|
|
LEFT JOIN ICSExtension F WITH(NOLOCK) ON F.ID=EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH(NOLOCK) ON a.lotno=G.lotno
|
|
inner JOIN ICSODeliveryNotice DN ON E.OASNCode=DN.OASNCode
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.lotno IS NOT NULL
|
|
and a.MUSER<>'admin'
|
|
|
|
) A WHERE 1=1 AND A.BRGDesc<>'' and A.BRGDesc IS NOT NULL AND A.BRGDesc='复判NG' AND A.SFJA='是'
|
|
AND MTIME BETWEEN '{2}' AND '{3}'
|
|
|
|
--SELECT * FROM #YearTemp1
|
|
-- SELECT COUNT(*) AS cc,InvCode,MTIME INTO #Table2 FROM #Temp1 GROUP BY InvCode,MTIME
|
|
--UNION
|
|
|
|
|
|
SELECT COUNT(*) AS cc, b.InvCode,b.MTIME,a.Num INTO #Table3 FROM [ICSMonthByNew] a
|
|
LEFT JOIN #YearTemp1 b ON a.Num=b.YB
|
|
GROUP BY b.InvCode,b.MTIME,a.Num
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STUFF((SELECT DISTINCT '],[' +dr.Num
|
|
FROM #Table3 dr
|
|
FOR XML PATH(''), TYPE
|
|
).value('.', 'NVARCHAR(MAX)') +']'
|
|
,1,2,'')
|
|
--SELECT * FROM #Table3
|
|
SET @cols='SELECT * INTO #Table4 FROM #Table3
|
|
PIVOT ( SUM(cc) FOR Num IN ('+
|
|
@cols+') )a orDER BY InvCode
|
|
|
|
|
|
select distinct A.*,D.* from #Temp1 A
|
|
LEFT JOIN #YearTemp1 C ON A.InvCode=C.InvCode
|
|
LEFT JOIN #Table4 D ON A.InvCode=D.InvCode
|
|
Where A.InvCode is not null
|
|
order by A.MTIME desc
|
|
|
|
'
|
|
PRINT(@cols)
|
|
EXEC(@cols)
|
|
|
|
DROP TABLE #Temp1 DROP TABLE #YearTemp1 DROP TABLE #Table3
|
|
|
|
|
|
|
|
|
|
|
|
";
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth, Year, WYear);
|
|
|
|
var dt=SqlHelper.GetDataTableBySql(sql);
|
|
|
|
string[] vs = new string[] { "对外改善日期", "入料日期", "月别", "料号", "厂商", "物料名称", "不良内容详细",
|
|
"判定结果", "不良分类", "备注", "物料类别", "当月第几周", "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" };
|
|
// 创建一个新的 DataTable
|
|
DataTable table = new DataTable();
|
|
for (int j = 0; j < vs.Length; j++)
|
|
{
|
|
table.Columns.Add(vs[j], typeof(string));
|
|
}
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
DataRow row1 = table.NewRow();
|
|
row1["对外改善日期"] = dt.Rows[i]["CHUJIANSHIJIAN"].ToString();
|
|
row1["入料日期"] = dt.Rows[i]["MTIME"].ToString();
|
|
row1["月别"] = dt.Rows[i]["YB"].ToString();
|
|
row1["料号"] = dt.Rows[i]["InvCode"].ToString();
|
|
row1["厂商"] = dt.Rows[i]["VenName"].ToString();
|
|
row1["物料名称"] = dt.Rows[i]["InvName"].ToString();
|
|
row1["不良内容详细"] = dt.Rows[i]["BLMX"].ToString();
|
|
row1["判定结果"] = dt.Rows[i]["Result"].ToString();
|
|
row1["不良分类"] = dt.Rows[i]["BadDesc"].ToString();
|
|
row1["备注"] = dt.Rows[i]["SQEEngineerRemark"].ToString();
|
|
row1["物料类别"] = dt.Rows[i]["ClassName"].ToString();
|
|
row1["当月第几周"] = dt.Rows[i]["ZB"].ToString();
|
|
row1["1月"] = dt.Rows[i]["1月"].ToString();
|
|
row1["2月"] = dt.Rows[i]["2月"].ToString();
|
|
row1["3月"] = dt.Rows[i]["3月"].ToString();
|
|
row1["4月"] = dt.Rows[i]["4月"].ToString();
|
|
row1["5月"] = dt.Rows[i]["5月"].ToString();
|
|
row1["6月"] = dt.Rows[i]["6月"].ToString();
|
|
row1["7月"] = dt.Rows[i]["7月"].ToString();
|
|
row1["8月"] = dt.Rows[i]["8月"].ToString();
|
|
row1["9月"] = dt.Rows[i]["9月"].ToString();
|
|
row1["10月"] = dt.Rows[i]["10月"].ToString();
|
|
row1["11月"] = dt.Rows[i]["11月"].ToString();
|
|
row1["12月"] = dt.Rows[i]["12月"].ToString();
|
|
table.Rows.Add(row1);
|
|
}
|
|
return table;
|
|
#endregion
|
|
|
|
}
|
|
|
|
public DataTable ExportAll5(string DateNow)
|
|
{
|
|
string date = DateNow;
|
|
var dates = date.ToDate();
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1).AddDays(-1).ToString("yyyy-MM-dd");
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth).ToString("yyyy-MM-dd");
|
|
#region [SQL]
|
|
|
|
string sql = @"SELECT top 20
|
|
Sum (count) Invcount,VenName
|
|
INTO #VanName
|
|
from
|
|
|
|
(SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.IQCHeaderResult ZGJG,
|
|
a.InvBatcgNo BatchCode,
|
|
1 as count
|
|
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) ON a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) ON a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode = A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode = A.BRGCode
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}'
|
|
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
REPLACE(C.InvCode, '编码规则', '') WLFL,
|
|
J.VenName VENNAME,
|
|
'' ZGJG,
|
|
F.BatchCode,
|
|
1 as count
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSASN H WITH (NOLOCK) ON H.ASNCode=D.ASNCode AND H.WorkPoint=D.WorkPoint
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASN I WITH (NOLOCK) ON I.OASNCode=E.OASNCode AND I.WorkPoint=E.WorkPoint
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
LEFT JOIN ICSVendor J ON ISNULL(H.VenCode, I.VenCode)=J.VenCode AND J.WorkPoint=a.WorkPoint
|
|
WHERE (a.BusinessCode = '1' OR a.BusinessCode = '9') AND a.MTIME>'{0}' AND a.MTIME<'{1}'
|
|
) a
|
|
GROUP BY a.VenName
|
|
ORDER BY Invcount DESC
|
|
|
|
|
|
SELECT c.Num,c.[Month]
|
|
INTO #TempMonth
|
|
FROM ICSMonth c WHERE c.[Month] BETWEEN '{0}' AND '{1}'
|
|
ORDER BY c.Num
|
|
|
|
|
|
select '1' Num,'交货批次数' Type INTO #TempType UNION select '2' Num,'异常批次数' Type UNION select '3' Num,'批次不良率' Type
|
|
|
|
SELECT
|
|
VenName,
|
|
WLFL
|
|
INTO #temp1
|
|
FROM (
|
|
SELECT ROW_NUMBER() OVER (PARTITION BY VenName ORDER BY SL DESC) AS RowNum,
|
|
VenName,
|
|
WLFL,
|
|
SL
|
|
|
|
FROM (
|
|
SELECT
|
|
COUNT(*) AS SL,
|
|
VenName,
|
|
WLFL
|
|
FROM (
|
|
SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.InvBatcgNo BatchCode,
|
|
FORMAT(CONVERT(DATE,FirstCheckTime, 120), 'yyyy-MM') CHUJIANSHIJIAN,
|
|
a.IQCHeaderResult ZGJG
|
|
|
|
FROM IcsMatCheckResult a WITH (NOLOCK)
|
|
LEFT JOIN ICSVendor c WITH (NOLOCK) ON a.VenCode = c.VenCode AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN ICSInventory d WITH (NOLOCK) ON a.InvCode = d.InvCode AND a.WorkPoint = d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX WITH (NOLOCK) ON BLXX.BRGCode = A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 WITH (NOLOCK) ON BLXX1.BadReasonCode = A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL WITH (NOLOCK) ON BLFL.BadCode = A.BRGCode
|
|
inner JOIN #VanName v ON c.VenName=v.VenName
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}'
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT
|
|
|
|
REPLACE(C.InvCode, '编码规则', '') WLFL,
|
|
J.VenName VENNAME,
|
|
f.BatchCode,
|
|
FORMAT(CONVERT(datetime, a.MTIME, 120), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
'' ZGJG
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSASN H WITH (NOLOCK) ON H.ASNCode=D.ASNCode AND H.WorkPoint=D.WorkPoint
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASN I WITH (NOLOCK) ON I.OASNCode=E.OASNCode AND I.WorkPoint=E.WorkPoint
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
LEFT JOIN ICSVendor J ON ISNULL(H.VenCode, I.VenCode)=J.VenCode AND J.WorkPoint=a.WorkPoint
|
|
inner JOIN #VanName v ON J.VenName=v.VenName
|
|
WHERE (a.BusinessCode = '1' OR a.BusinessCode = '9') AND a.MTIME>'{0}' AND a.MTIME<'{1}'
|
|
AND G.LotNo IS NULL
|
|
AND a.MUSER <> 'admin'
|
|
) AS A
|
|
GROUP BY VenName, WLFL
|
|
) AS GroupedResults
|
|
) AS RankedResults
|
|
WHERE RowNum <= 5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempForecast
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.InvBatcgNo BatchCode,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN #VanName v ON c.VenName=v.VenName
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}'
|
|
|
|
UNION ALL
|
|
|
|
SELECT DISTINCT REPLACE(C.InvCode, '编码规则', '') WLFL,
|
|
J.VenName VENNAME,
|
|
f.BatchCode,
|
|
FORMAT( CONVERT( datetime,a.MTIME,120), 'yyyy/MM/dd') CHUJIANSHIJIAN
|
|
FROM ICSWareHouseLotInfoLog a WITH (NOLOCK)
|
|
INNER JOIN ICSWareHouseLotInfo b WITH (NOLOCK) ON a.LotNo = b.LotNo
|
|
LEFT JOIN ICSInventory C WITH (NOLOCK) ON C.InvCode = A.InvCode
|
|
LEFT JOIN ICSASNDetail D WITH (NOLOCK) ON D.LotNo = A.LotNo
|
|
LEFT JOIN ICSASN H WITH (NOLOCK) ON H.ASNCode=D.ASNCode AND H.WorkPoint=D.WorkPoint
|
|
LEFT JOIN ICSOASNDetail E WITH (NOLOCK) ON E.LotNo = A.LotNo
|
|
LEFT JOIN ICSOASN I WITH (NOLOCK) ON I.OASNCode=E.OASNCode AND I.WorkPoint=E.WorkPoint
|
|
LEFT JOIN ICSInventoryLoT EE WITH (NOLOCK) ON EE.LotNo = A.LotNo
|
|
LEFT JOIN ICSExtension F WITH (NOLOCK) ON F.ID = EE.ExtensionID
|
|
LEFT JOIN ICSInspection G WITH (NOLOCK) ON G.LOTNO = A.LotNo
|
|
LEFT JOIN ICSVendor J ON ISNULL(H.VenCode, I.VenCode)=J.VenCode AND J.WorkPoint=a.WorkPoint
|
|
inner JOIN #VanName v ON J.VenName=v.VenName
|
|
WHERE (a.BusinessCode='1' or a.BusinessCode='9') AND G.LotNo IS NULL
|
|
and a.MUSER<>'admin' AND a.MTIME>'{0}' AND a.MTIME<'{1}'
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName --AND a.BatchCode=b.BatchCode
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
|
|
SELECT COUNT(*) AS Quantity,
|
|
FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM') AS CHUJIANSHIJIAN ,A.WLFL,A.VenName
|
|
INTO #TempDetail
|
|
FROM #temp1 B
|
|
INNER JOIN (SELECT DISTINCT
|
|
REPLACE(d.InvCode, '编码规则', '') WLFL,
|
|
c.VenName,
|
|
a.InvBatcgNo BatchCode,
|
|
FORMAT( CONVERT( datetime,a.FirstCheckTime), 'yyyy/MM/dd') CHUJIANSHIJIAN,
|
|
a.IQCHeaderResult ZGJG
|
|
FROM IcsMatCheckResult a with (nolock)
|
|
LEFT JOIN ICSVendor c with (nolock) on a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
|
|
LEFT JOIN ICSInventory d with (nolock) on a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
|
|
LEFT JOIN ICSBadReasonGroup BLXX with (nolock) ON BLXX.BRGCode=A.BCGCode
|
|
LEFT JOIN ICSBadReason BLXX1 with (nolock) ON BLXX1.BadReasonCode=A.BadReasonCode
|
|
LEFT JOIN ICSBadCode BLFL with (nolock) ON BLFL.BadCode=A.BRGCode
|
|
inner JOIN #VanName v ON c.VenName=v.VenName
|
|
WHERE a.FirstCheckTime>'{0}' AND a.FirstCheckTime<'{1}' AND a.IQCHeaderResult='NG'
|
|
) A ON a.WLFL=b.WLFL AND a.VenName=b.VenName
|
|
GROUP BY FORMAT(CONVERT(DATE,CHUJIANSHIJIAN, 120), 'yyyy-MM'),A.WLFL,A.VenName
|
|
|
|
SELECT VenName,'1' AS Num,'交货批次数' AS Type,WLFL,ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
INTO #TempForecastMonth
|
|
FROM #TempForecast
|
|
UNION ALL
|
|
SELECT VenName,'2' AS Num,'异常批次数' AS Type,WLFL, ISNULL(CAST(Quantity AS VARCHAR(100)),0) AS Quantity,CHUJIANSHIJIAN
|
|
FROM #TempDetail
|
|
UNION ALL
|
|
SELECT a.VenName,'3' AS Num,'批次不良率' AS Type,a.WLFL,CAST(CAST(ISNULL(b.Quantity,0)/(CASE WHEN ISNULL(a.Quantity, 0)=0 THEN 1 ELSE a.Quantity END)*100 AS DECIMAL(18,1)) AS VARCHAR(100))+'%' AS Quantity,a.CHUJIANSHIJIAN
|
|
FROM #TempForecast a
|
|
LEFT JOIN #TempDetail b ON a.VenName=b.VenName AND a.WLFL=b.WLFL
|
|
|
|
|
|
SELECT ISNULL(a.VenName, b.VenName) AS VenName, ISNULL(a.Num, b.Num) AS Num,ISNULL(a.Type, b.Type) AS Type,ISNULL(a.CHUJIANSHIJIAN, b.CHUJIANSHIJIAN) AS CHUJIANSHIJIAN,b.Quantity,ISNULL(a.WLFL, b.WLFL) AS WLFL
|
|
INTO #TempForecastAll
|
|
FROM (SELECT f.VenName,WLFL, t.Num,t.Type,CHUJIANSHIJIAN,f.Quantity FROM #TempForecast f,#TempType t) a
|
|
FULL JOIN #TempForecastMonth b ON a.VenName=b.VenName AND a.Type=b.Type AND a.CHUJIANSHIJIAN=b.CHUJIANSHIJIAN
|
|
DECLARE @sql varchar(4000)
|
|
|
|
SELECT @sql=isnull(@sql+',','')+'['+[Month]+']'
|
|
FROM (SELECT [Month] FROM #TempMonth) AS a
|
|
|
|
|
|
SET @sql='SELECT VenName AS TOP厂商,Type AS 项目类别, WLFL AS 物料编码,'+@sql+' FROM #TempForecastAll PIVOT( MAX(Quantity) FOR CHUJIANSHIJIAN IN ('+@sql+'))a order BY VenName,WLFL,Type '
|
|
|
|
PRINT(@sql)
|
|
EXEC(@sql)
|
|
|
|
DROP TABLE #TempMonth
|
|
DROP TABLE #TempDetail
|
|
DROP TABLE #TempForecast
|
|
DROP TABLE #TempForecastMonth
|
|
DROP TABLE #TempForecastAll
|
|
DROP TABLE #TempType
|
|
DROP TABLE #temp1
|
|
DROP TABLE #VanName
|
|
|
|
|
|
|
|
|
|
|
|
";
|
|
|
|
sql = string.Format(sql, firstDayOfMonth, lastDayOfMonth);
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
#region
|
|
public object GetDecimalDigits()
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
|
|
object Figure = SqlHelper.ExecuteScalar(sql);
|
|
return Figure;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message.ToString());
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 订单备料明细查询
|
|
/// <summary>
|
|
/// 订单备料明细查询
|
|
/// </summary>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetMOIssueApplyNegDetail(string RCVCode, ref Pagination jqgridparam)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
//object Figure = GetDecimalDigits();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.ID,a.RCVCode,a.Sequence,a.SourceSequence,a.SourceCode,a.InvCode,a.Quantity,a.Amount,a.RCVQuantity,a.WHCode,e.WarehouseName as WHName,a.Type
|
|
,a.ExtensionID,a.MUSER,a.MUSERName,a.MTIME,a.WorkPoint,b.InvName,a.CreateDateTime,a.CreatePerson
|
|
,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
|
|
,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
|
|
,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,a.EATTRIBUTE10
|
|
from ICSManufactureReceive a
|
|
left join ICSInventory b on a.InvCode = b.InvCode and a.WorkPoint = b.WorkPoint
|
|
left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
|
|
left join ICSWarehouse e on a.WHCode = e.WarehouseCode and a.WorkPoint=e.WorkPoint
|
|
where a.RCVCode = '" + RCVCode + "' ";
|
|
//sql = string.Format(sql, Figure);
|
|
DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
#endregion
|
|
|
|
public void ClearTemp()
|
|
{
|
|
Invmes.Rows.Clear();
|
|
}
|
|
|
|
public string ICSMOIssueSendBackAuditRollback(string keyValue)
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
#region 创建一步调拨单
|
|
/// <summary>
|
|
/// 创建一步调拨单
|
|
/// </summary>
|
|
/// <param name="keyValue"></param>
|
|
/// <returns></returns>
|
|
public string AddICSTransfer(string keyValue)
|
|
{
|
|
string returnValue = string.Empty;
|
|
|
|
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
|
|
string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
var sql = string.Empty;
|
|
|
|
try
|
|
{
|
|
var key = keyValue.ToJObject();
|
|
//验证是否同一个供应商
|
|
sql = $@"SELECT DISTINCT WarehouseCode FROM ICSWareHouseLotInfo where LotNo in ({key["Lots"]}) AND WorkPoint ='{WorkPoint}' ";
|
|
var dt1 = SqlHelper.CmdExecuteDataTable(sql);
|
|
if (dt1.Rows.Count > 1 || dt1.Rows.Count <= 0)
|
|
{
|
|
throw new Exception("创建调拨单的条码必须是同一个供应商的物料,操作失败");
|
|
}
|
|
TransferINHead addICSTransfer = new TransferINHead();
|
|
List<TransferINBody> transferINBodies = new List<TransferINBody>();
|
|
//查询单据信息
|
|
sql = $@"SELECT Sum(Quantity) Quantity,WarehouseCode OutWhCode,LocationCode OutBinCode,InvCode from ICSWareHouseLotInfo WHERE LotNo in ({key["Lots"]}) AND WorkPoint='{WorkPoint}' GROUP BY WarehouseCode,LocationCode,InvCode ";
|
|
var dt = SqlHelper.CmdExecuteDataTable(sql);
|
|
if (dt.Rows.Count <= 1)
|
|
{
|
|
throw new Exception("条码信息有误请确认,操作失败");
|
|
}
|
|
addICSTransfer.DocDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
addICSTransfer.OrgCode = WorkPoint;
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
TransferINBody transferINBody =
|
|
new TransferINBody
|
|
{
|
|
Quantity = (dt.Rows[i]["Quantity"]).ToDecimal(),
|
|
InvCode = dt.Rows[i]["InvCode"].ToString(),
|
|
OutWhCode = dt.Rows[i]["OutWhCode"].ToString(),
|
|
OutBinCode = dt.Rows[i]["OutBinCode"].ToString(),
|
|
//SupplierCode = dt.Rows[0]["VenCode"].ToString(),
|
|
INWhCode = key["WarehouseCode"].ToString(),
|
|
INBinCode = key["LocationCode"].ToString(),
|
|
Sequence = i + 1
|
|
|
|
};
|
|
transferINBodies.Add(transferINBody);
|
|
}
|
|
addICSTransfer.details = transferINBodies;
|
|
|
|
#region 调用ERP接口
|
|
if (!addICSTransfer.IsEmpty())
|
|
{
|
|
|
|
string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "U9OneStepTransferDocIn/Create";
|
|
var erpinput = JsonConvert.SerializeObject(addICSTransfer);
|
|
string result1 = HttpPost(APIURL, erpinput);
|
|
JObject Obj = (JObject)JsonConvert.DeserializeObject(result1);//或者JObject jo = JObject.Parse(jsonText);
|
|
string MessAge = Obj["Message"].ToString();
|
|
string Success = Obj["Success"].ToString();
|
|
if (Success.ToUpper() == "FALSE")
|
|
{
|
|
throw new Exception(MessAge);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
return "";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 接口api解析
|
|
//接口api解析
|
|
public static string HttpPost(string url, string body)
|
|
{
|
|
try
|
|
{
|
|
Encoding encoding = Encoding.UTF8;
|
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
|
request.Method = "POST";
|
|
request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
|
|
request.ContentType = "application/json; charset=utf-8";
|
|
|
|
byte[] buffer = encoding.GetBytes(body);
|
|
request.ContentLength = buffer.Length;
|
|
request.GetRequestStream().Write(buffer, 0, buffer.Length);
|
|
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
|
|
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
|
|
{
|
|
return reader.ReadToEnd();
|
|
}
|
|
}
|
|
catch (WebException ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 获取当前月份每周的开始时间和结束时间
|
|
/// <summary>
|
|
/// 获取当前月份每周的开始时间和结束时间
|
|
/// </summary>
|
|
/// <param name="date"></param>
|
|
/// <returns></returns>
|
|
public static List<WeekRange> GetCurrentMonthWeeks(string date)
|
|
{
|
|
var dates = date.ToDate();
|
|
var firstDayOfMonth = new DateTime(dates.Year, dates.Month, 1);
|
|
var daysInMonth = DateTime.DaysInMonth(dates.Year, dates.Month);
|
|
var lastDayOfMonth = new DateTime(dates.Year, dates.Month, daysInMonth);
|
|
|
|
var weeks = new List<WeekRange>();
|
|
var currentWeekStart = GetFirstMondayOfMonth(firstDayOfMonth);
|
|
|
|
while (currentWeekStart <= lastDayOfMonth)
|
|
{
|
|
var currentWeekEnd = currentWeekStart.AddDays(7);
|
|
if (currentWeekEnd > lastDayOfMonth)
|
|
{
|
|
// 如果是这个月的最后一天,计算下月第一天
|
|
currentWeekEnd = lastDayOfMonth.Date;
|
|
}
|
|
|
|
weeks.Add(new WeekRange
|
|
{
|
|
Start = currentWeekStart.ToString("yyyy-mm-dd"),
|
|
End = currentWeekEnd.ToString("yyyy-mm-dd")
|
|
});
|
|
|
|
// Move to the next week
|
|
currentWeekStart = currentWeekStart.AddDays(7);
|
|
}
|
|
|
|
return weeks;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 获取当年每月的开始时间和结束时间
|
|
|
|
/// <summary>
|
|
/// 获取当年每月的开始时间和结束时间
|
|
/// </summary>
|
|
/// <param name="year"></param>
|
|
/// <returns></returns>
|
|
public static List<MonthRange> GetMonthsOfYear(int year)
|
|
{
|
|
var months = new List<MonthRange>();
|
|
|
|
for (int month = 1; month <= 12; month++)
|
|
{
|
|
var firstDayOfMonth = new DateTime(year, month, 1);
|
|
DateTime lastDayOfMonth;
|
|
if (month == 12)
|
|
{
|
|
// 如果是12月,则下一个月是下一年的1月
|
|
lastDayOfMonth = new DateTime(year + 1, 1, 1);
|
|
}
|
|
else
|
|
{
|
|
// 否则,是下一个月的第一天
|
|
lastDayOfMonth = new DateTime(year, month + 1, 1);
|
|
}
|
|
|
|
months.Add(new MonthRange
|
|
{
|
|
Start = firstDayOfMonth.ToString("yyyy-mm-dd"),
|
|
End = lastDayOfMonth.ToString("yyyy-mm-dd")
|
|
});
|
|
}
|
|
|
|
return months;
|
|
}
|
|
#endregion
|
|
|
|
private static DateTime GetFirstMondayOfMonth(DateTime firstDayOfMonth)
|
|
{
|
|
var daysUntilMonday = (7 - (int)firstDayOfMonth.DayOfWeek + 7) % 7;
|
|
return firstDayOfMonth.AddDays(daysUntilMonday);
|
|
}
|
|
|
|
|
|
public DataTable SelectTableColumnName(string BeginTime, string EndTime)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string sql = $@"DECLARE @StartDate DATE = '{BeginTime}';
|
|
DECLARE @EndDate DATE = '{EndTime}';
|
|
|
|
WITH DateSequence AS (
|
|
SELECT @StartDate AS DateValue
|
|
UNION ALL
|
|
SELECT DATEADD(DAY, 1, DateValue)
|
|
FROM DateSequence
|
|
WHERE DateValue < @EndDate
|
|
)
|
|
SELECT CONVERT(NVARCHAR(50),DateValue,23) DateValue
|
|
FROM DateSequence
|
|
OPTION (MAXRECURSION 0);";
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
return dt;
|
|
}
|
|
|
|
|
|
#region 订单所在的日期的订单未交货数量
|
|
/// <summary>
|
|
/// 订单所在的日期的订单未交货数量
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetPOUnarrivedQuantity(string queryJson)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
string StartDate = queryParam["DateNow"].ToString();
|
|
string EndDate = queryParam["DateNow1"].ToString();
|
|
|
|
|
|
string sql = $@"
|
|
WITH PurchaseOrders AS (
|
|
SELECT
|
|
CONVERT(NVARCHAR(50), CreateDateTime, 23) AS PODate,
|
|
InvCode ,
|
|
InvName ,
|
|
VenCode ,
|
|
VenName ,
|
|
sum(Quantity) - sum(ISNULL(RECEIVEQTY, 0)) + Sum(ISNULL(NGQTY, 0)) AS QTY
|
|
FROM (
|
|
-- 这里包含采购订单的逻辑,与之前相同,但移除了DISTINCT
|
|
SELECT
|
|
po.POCode,
|
|
po.Sequence,
|
|
po.CreateDateTime,
|
|
po.VenCode,
|
|
ven.VenName,
|
|
po.InvCode,
|
|
inv.InvName,
|
|
po.Quantity,
|
|
cc.RECEIVEQTY,
|
|
gg.NGQTY
|
|
FROM
|
|
dbo.ICSPurchaseOrder po WITH (NOLOCK)
|
|
LEFT JOIN dbo.ICSINVENTORY inv WITH (NOLOCK) ON po.InvCode = inv.INVCODE AND po.WorkPoint = inv.WorkPoint
|
|
LEFT JOIN dbo.ICSVendor ven WITH (NOLOCK) ON po.VenCode = ven.VenCode
|
|
LEFT JOIN (
|
|
SELECT
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode,
|
|
SUM(aa.DNQuantity) AS RECEIVEQTY
|
|
FROM
|
|
ICSASNdetail aa WITH (NOLOCK)
|
|
LEFT JOIN
|
|
ICSInventoryLot bb WITH (NOLOCK) ON aa.LotNo = bb.LotNo AND aa.WorkPoint = bb.WorkPoint
|
|
LEFT JOIN
|
|
ICSInventoryLotDetail cc WITH (NOLOCK) ON bb.LOTNO = cc.LotNO
|
|
GROUP BY
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode
|
|
) cc ON po.POCode = cc.TransCode AND po.Sequence = cc.TransSequence
|
|
LEFT JOIN (
|
|
SELECT
|
|
c.TransCode,
|
|
c.TransSequence,
|
|
SUM(ISNULL(a.UnqualifiedQuantity, 0)) AS NGQTY
|
|
FROM
|
|
ICSInspection a WITH (NOLOCK)
|
|
LEFT JOIN
|
|
ICSInventoryLot b WITH (NOLOCK) ON a.LotNo = b.lotno
|
|
LEFT JOIN
|
|
ICSInventoryLotDetail c WITH (NOLOCK) ON b.LOTNO = c.LotNO
|
|
WHERE
|
|
b.EATTRIBUTE2 IS NULL
|
|
GROUP BY
|
|
c.TransCode,
|
|
c.TransSequence
|
|
) gg ON po.POCode = gg.TransCode AND po.Sequence = gg.TransSequence
|
|
WHERE
|
|
po.Status = '2'
|
|
AND po.ReleaseState = '1'
|
|
AND po.WorkPoint = 'KC47'
|
|
AND po.CreateDateTime BETWEEN '{StartDate}' AND '{EndDate}'
|
|
AND (po.Quantity - ISNULL(cc.RECEIVEQTY, 0) + ISNULL(gg.NGQTY, 0)) > 0
|
|
|
|
UNION ALL
|
|
|
|
-- 这里包含外包订单的逻辑,与之前相同,但移除了DISTINCT并添加了OrderType
|
|
SELECT
|
|
a.OOCode AS POCode,
|
|
a.Sequence,
|
|
a.CreateDateTime,
|
|
a.VenCode,
|
|
ven.VenName,
|
|
a.InvCode,
|
|
c.InvName,
|
|
a.Quantity,
|
|
cc.RECEIVEQTY,
|
|
gg.NGQTY
|
|
FROM
|
|
dbo.ICSOutsourcingOrder a
|
|
LEFT JOIN dbo.ICSINVENTORY c WITH (NOLOCK) ON a.InvCode = c.INVCODE AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN dbo.ICSVendor ven WITH (NOLOCK) ON a.VenCode = ven.VenCode
|
|
LEFT JOIN (
|
|
SELECT
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode,
|
|
SUM(aa.Quantity) AS RECEIVEQTY
|
|
FROM
|
|
ICSOASNDetail aa WITH (NOLOCK)
|
|
LEFT JOIN
|
|
ICSInventoryLot bb WITH (NOLOCK) ON aa.LotNo = bb.LotNo AND aa.WorkPoint = bb.WorkPoint
|
|
LEFT JOIN
|
|
ICSInventoryLotDetail cc WITH (NOLOCK) ON bb.LOTNO = cc.LotNO
|
|
GROUP BY
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode
|
|
) cc ON a.OOCode = cc.TransCode AND a.Sequence = cc.TransSequence
|
|
LEFT JOIN (
|
|
-- 注意这里的修正:使用a.OOCode而不是cc.TransCode进行连接
|
|
SELECT
|
|
c.TransCode,
|
|
c.TransSequence,
|
|
SUM(ISNULL(a.UnqualifiedQuantity, 0)) AS NGQTY
|
|
FROM
|
|
ICSInspection a
|
|
LEFT JOIN ICSInventoryLot b ON a.LotNo = b.lotno
|
|
LEFT JOIN ICSInventoryLotDetail c ON b.LOTNO = c.LotNO
|
|
WHERE
|
|
b.EATTRIBUTE2 IS NULL
|
|
GROUP BY
|
|
c.TransCode,
|
|
c.TransSequence
|
|
) gg ON a.OOCode = gg.TransCode AND a.Sequence = gg.TransSequence
|
|
WHERE
|
|
a.ReleaseState = '1'
|
|
AND a.WorkPoint = 'KC47'
|
|
AND a.Status = '2'
|
|
AND a.CreateDateTime BETWEEN '{StartDate}' AND '{EndDate}'
|
|
AND (a.Quantity - ISNULL(cc.RECEIVEQTY, 0) + ISNULL(gg.NGQTY, 0)) > 0
|
|
) AS CombinedOrders
|
|
|
|
GROUP BY InvCode ,InvName,VenCode,VenName,CONVERT(NVARCHAR(50), CreateDateTime, 23)
|
|
|
|
),
|
|
PivotData AS (
|
|
SELECT
|
|
*
|
|
FROM
|
|
PurchaseOrders
|
|
)
|
|
-- 将数据插入临时表(如果需要,也可以直接使用CTE进行PIVOT)
|
|
SELECT * INTO #tempPivotData FROM PivotData
|
|
|
|
DECLARE @StartDate DATE = '{StartDate}';
|
|
DECLARE @EndDate DATE = '{EndDate}';
|
|
|
|
WITH DateSequence AS (
|
|
SELECT @StartDate AS DateValue
|
|
UNION ALL
|
|
SELECT DATEADD(DAY, 1, DateValue)
|
|
FROM DateSequence
|
|
WHERE DateValue < @EndDate
|
|
)
|
|
SELECT CONVERT(NVARCHAR(50),DateValue,23) PODate into #table1
|
|
FROM DateSequence
|
|
OPTION (MAXRECURSION 0)
|
|
|
|
-- 构建PIVOT查询的动态SQL
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STRING_AGG('[' + PODate + ']', ',') WITHIN GROUP (ORDER BY PODate)
|
|
FROM (SELECT DISTINCT PODate FROM #table1) AS DateList
|
|
|
|
DECLARE @sql AS NVARCHAR(MAX)
|
|
SET @sql = '
|
|
SELECT * FROM (
|
|
SELECT
|
|
*
|
|
FROM
|
|
#tempPivotData
|
|
) AS SourceTable
|
|
PIVOT (
|
|
SUM(QTY) FOR PODate IN (' + @cols + ')
|
|
) AS PivotTable
|
|
|
|
'
|
|
|
|
-- 执行动态SQL
|
|
EXEC sp_executesql @sql
|
|
|
|
-- 清理临时表
|
|
DROP TABLE #tempPivotData
|
|
DROP TABLE #table1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
";
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 订单所在的日期的订单未交货数量导出
|
|
/// <summary>
|
|
/// 订单所在的日期的订单未交货数量导出
|
|
/// </summary>
|
|
/// <param name="beginTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <returns></returns>
|
|
|
|
public DataTable ExportAll7(string beginTime, string endTime)
|
|
{
|
|
|
|
#region [SQL]
|
|
|
|
string sql = $@"WITH PurchaseOrders AS (
|
|
SELECT
|
|
CONVERT(NVARCHAR(50), CreateDateTime, 23) AS PODate,
|
|
InvCode as '物料编码',
|
|
InvName as '物料名称',
|
|
VenCode as '供应商编码',
|
|
VenName as '供应商名称',
|
|
sum(Quantity) - sum(ISNULL(RECEIVEQTY, 0)) + Sum(ISNULL(NGQTY, 0)) AS QTY
|
|
FROM (
|
|
-- 这里包含采购订单的逻辑,与之前相同,但移除了DISTINCT
|
|
SELECT
|
|
po.POCode,
|
|
po.Sequence,
|
|
po.CreateDateTime,
|
|
po.VenCode,
|
|
ven.VenName,
|
|
po.InvCode,
|
|
inv.InvName,
|
|
po.Quantity,
|
|
cc.RECEIVEQTY,
|
|
gg.NGQTY
|
|
FROM
|
|
dbo.ICSPurchaseOrder po WITH (NOLOCK)
|
|
LEFT JOIN dbo.ICSINVENTORY inv WITH (NOLOCK) ON po.InvCode = inv.INVCODE AND po.WorkPoint = inv.WorkPoint
|
|
LEFT JOIN dbo.ICSVendor ven WITH (NOLOCK) ON po.VenCode = ven.VenCode
|
|
LEFT JOIN (
|
|
SELECT
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode,
|
|
SUM(aa.DNQuantity) AS RECEIVEQTY
|
|
FROM
|
|
ICSASNdetail aa WITH (NOLOCK)
|
|
LEFT JOIN
|
|
ICSInventoryLot bb WITH (NOLOCK) ON aa.LotNo = bb.LotNo AND aa.WorkPoint = bb.WorkPoint
|
|
LEFT JOIN
|
|
ICSInventoryLotDetail cc WITH (NOLOCK) ON bb.LOTNO = cc.LotNO
|
|
GROUP BY
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode
|
|
) cc ON po.POCode = cc.TransCode AND po.Sequence = cc.TransSequence
|
|
LEFT JOIN (
|
|
SELECT
|
|
c.TransCode,
|
|
c.TransSequence,
|
|
SUM(ISNULL(a.UnqualifiedQuantity, 0)) AS NGQTY
|
|
FROM
|
|
ICSInspection a WITH (NOLOCK)
|
|
LEFT JOIN
|
|
ICSInventoryLot b WITH (NOLOCK) ON a.LotNo = b.lotno
|
|
LEFT JOIN
|
|
ICSInventoryLotDetail c WITH (NOLOCK) ON b.LOTNO = c.LotNO
|
|
WHERE
|
|
b.EATTRIBUTE2 IS NULL
|
|
GROUP BY
|
|
c.TransCode,
|
|
c.TransSequence
|
|
) gg ON po.POCode = gg.TransCode AND po.Sequence = gg.TransSequence
|
|
WHERE
|
|
po.Status = '2'
|
|
AND po.ReleaseState = '1'
|
|
AND po.WorkPoint = 'KC47'
|
|
AND po.CreateDateTime BETWEEN '{beginTime}' AND '{endTime}'
|
|
AND (po.Quantity - ISNULL(cc.RECEIVEQTY, 0) + ISNULL(gg.NGQTY, 0)) > 0
|
|
|
|
UNION ALL
|
|
|
|
-- 这里包含外包订单的逻辑,与之前相同,但移除了DISTINCT并添加了OrderType
|
|
SELECT
|
|
a.OOCode AS POCode,
|
|
a.Sequence,
|
|
a.CreateDateTime,
|
|
a.VenCode,
|
|
ven.VenName,
|
|
a.InvCode,
|
|
c.InvName,
|
|
a.Quantity,
|
|
cc.RECEIVEQTY,
|
|
gg.NGQTY
|
|
FROM
|
|
dbo.ICSOutsourcingOrder a
|
|
LEFT JOIN dbo.ICSINVENTORY c WITH (NOLOCK) ON a.InvCode = c.INVCODE AND a.WorkPoint = c.WorkPoint
|
|
LEFT JOIN dbo.ICSVendor ven WITH (NOLOCK) ON a.VenCode = ven.VenCode
|
|
LEFT JOIN (
|
|
SELECT
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode,
|
|
SUM(aa.Quantity) AS RECEIVEQTY
|
|
FROM
|
|
ICSOASNDetail aa WITH (NOLOCK)
|
|
LEFT JOIN
|
|
ICSInventoryLot bb WITH (NOLOCK) ON aa.LotNo = bb.LotNo AND aa.WorkPoint = bb.WorkPoint
|
|
LEFT JOIN
|
|
ICSInventoryLotDetail cc WITH (NOLOCK) ON bb.LOTNO = cc.LotNO
|
|
GROUP BY
|
|
cc.TransCode,
|
|
cc.TransSequence,
|
|
bb.InvCode
|
|
) cc ON a.OOCode = cc.TransCode AND a.Sequence = cc.TransSequence
|
|
LEFT JOIN (
|
|
-- 注意这里的修正:使用a.OOCode而不是cc.TransCode进行连接
|
|
SELECT
|
|
c.TransCode,
|
|
c.TransSequence,
|
|
SUM(ISNULL(a.UnqualifiedQuantity, 0)) AS NGQTY
|
|
FROM
|
|
ICSInspection a
|
|
LEFT JOIN ICSInventoryLot b ON a.LotNo = b.lotno
|
|
LEFT JOIN ICSInventoryLotDetail c ON b.LOTNO = c.LotNO
|
|
WHERE
|
|
b.EATTRIBUTE2 IS NULL
|
|
GROUP BY
|
|
c.TransCode,
|
|
c.TransSequence
|
|
) gg ON a.OOCode = gg.TransCode AND a.Sequence = gg.TransSequence
|
|
WHERE
|
|
a.ReleaseState = '1'
|
|
AND a.WorkPoint = 'KC47'
|
|
AND a.Status = '2'
|
|
AND a.CreateDateTime BETWEEN '{beginTime}' AND '{endTime}'
|
|
AND (a.Quantity - ISNULL(cc.RECEIVEQTY, 0) + ISNULL(gg.NGQTY, 0)) > 0
|
|
) AS CombinedOrders
|
|
|
|
GROUP BY InvCode ,InvName,VenCode,VenName,CONVERT(NVARCHAR(50), CreateDateTime, 23)
|
|
|
|
),
|
|
PivotData AS (
|
|
SELECT
|
|
*
|
|
FROM
|
|
PurchaseOrders
|
|
)
|
|
-- 将数据插入临时表(如果需要,也可以直接使用CTE进行PIVOT)
|
|
SELECT * INTO #tempPivotData FROM PivotData
|
|
DECLARE @StartDate DATE = '{beginTime}';
|
|
DECLARE @EndDate DATE = '{endTime}';
|
|
|
|
WITH DateSequence AS (
|
|
SELECT @StartDate AS DateValue
|
|
UNION ALL
|
|
SELECT DATEADD(DAY, 1, DateValue)
|
|
FROM DateSequence
|
|
WHERE DateValue < @EndDate
|
|
)
|
|
SELECT CONVERT(NVARCHAR(50),DateValue,23) PODate into #table1
|
|
FROM DateSequence
|
|
OPTION (MAXRECURSION 0)
|
|
|
|
-- 构建PIVOT查询的动态SQL
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STRING_AGG('[' + PODate + ']', ',') WITHIN GROUP (ORDER BY PODate)
|
|
FROM (SELECT DISTINCT PODate FROM #table1) AS DateList
|
|
|
|
DECLARE @sql AS NVARCHAR(MAX)
|
|
SET @sql = '
|
|
SELECT * FROM (
|
|
SELECT
|
|
*
|
|
FROM
|
|
#tempPivotData
|
|
) AS SourceTable
|
|
PIVOT (
|
|
SUM(QTY) FOR PODate IN (' + @cols + ')
|
|
) AS PivotTable
|
|
|
|
'
|
|
|
|
-- 执行动态SQL
|
|
EXEC sp_executesql @sql
|
|
|
|
-- 清理临时表
|
|
DROP TABLE #tempPivotData
|
|
DROP TABLE #table1;";
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
#endregion
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 供应商交货的频率
|
|
/// <summary>
|
|
/// 供应商交货的频率,
|
|
/// </summary>
|
|
/// <param name="queryJson"></param>
|
|
/// <param name="jqgridparam"></param>
|
|
/// <returns></returns>
|
|
public DataTable GetVenDeliveries(string queryJson)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
object Figure = GetDecimalDigits();
|
|
//获取传递的年份和月份
|
|
string StartDate = queryParam["DateNow"].ToString();
|
|
string EndDate = queryParam["DateNow1"].ToString();
|
|
|
|
|
|
string sql = $@"
|
|
WITH PurchaseOrders AS (
|
|
SELECT A.InvCode,A.InvName,A.InvStd,A.VenCode,A.VenName,A.MTIME,sum(GS) GS FROM (SELECT DISTINCT
|
|
a.ASNCode,a.VenCode,c.VenName, 1 GS,
|
|
a.InvCode,b.InvName,b.InvStd,CONVERT(NVARCHAR(10),a.MTIME,120) MTIME,a.WorkPoint WorkPoint
|
|
FROM ICSDeliveryNotice a WITH (NOLOCK)
|
|
inner join ICSInventory b WITH (NOLOCK) on a.InvCode=b.InvCode and b.WorkPoint=a.WorkPoint
|
|
inner join ICSVendor c WITH (NOLOCK) on c.VenCode=a.VenCode and c.WorkPoint=a.WorkPoint
|
|
where a.DNType='1' AND a.MTIME BETWEEN '{StartDate}' AND '{EndDate}'
|
|
UNION ALL
|
|
SELECT DISTINCT
|
|
a.OASNCode ASNCode,a.VenCode,c.VenName,1 GS,
|
|
a.InvCode,b.InvName,b.InvStd,CONVERT(NVARCHAR(10),a.MTIME,120) MTIME,a.WorkPoint WorkPoint
|
|
FROM ICSODeliveryNotice a WITH (NOLOCK)
|
|
inner join ICSInventory b WITH (NOLOCK) on a.InvCode=b.InvCode and b.WorkPoint=a.WorkPoint
|
|
inner join ICSVendor c WITH (NOLOCK) on c.VenCode=a.VenCode and c.WorkPoint=a.WorkPoint
|
|
where a.ODNType='1'AND a.MTIME BETWEEN '{StartDate}' AND '{EndDate}' ) A
|
|
GROUP BY A.InvCode,A.InvName,A.InvStd,A.VenCode,A.VenName,A.MTIME
|
|
|
|
),
|
|
PivotData AS (
|
|
SELECT
|
|
InvCode,
|
|
InvName,
|
|
InvStd,
|
|
VenCode,
|
|
VenName,
|
|
MTIME,
|
|
GS
|
|
FROM
|
|
PurchaseOrders
|
|
)
|
|
-- 将数据插入临时表(如果需要,也可以直接使用CTE进行PIVOT)
|
|
SELECT * INTO #tempPivotData FROM PivotData
|
|
|
|
-- 构建PIVOT查询的动态SQL
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STRING_AGG('[' + MTIME + ']', ',') WITHIN GROUP (ORDER BY MTIME)
|
|
FROM (SELECT DISTINCT MTIME FROM #tempPivotData) AS DateList
|
|
|
|
DECLARE @sql AS NVARCHAR(MAX)
|
|
SET @sql = '
|
|
SELECT * FROM (
|
|
SELECT
|
|
InvCode,
|
|
InvName,
|
|
InvStd,
|
|
VenCode,
|
|
VenName,
|
|
MTIME,
|
|
GS
|
|
FROM
|
|
#tempPivotData
|
|
) AS SourceTable
|
|
PIVOT (
|
|
SUM(GS) FOR MTIME IN (' + @cols + ')
|
|
) AS PivotTable'
|
|
|
|
-- 执行动态SQL
|
|
EXEC sp_executesql @sql
|
|
|
|
-- 清理临时表
|
|
DROP TABLE #tempPivotData
|
|
";
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 供应商交货的频率导出
|
|
/// <summary>
|
|
/// 供应商交货的频率导出
|
|
/// </summary>
|
|
/// <param name="beginTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <returns></returns>
|
|
|
|
public DataTable ExportAll8(string beginTime, string endTime)
|
|
{
|
|
|
|
#region [SQL]
|
|
|
|
string sql = $@"WITH PurchaseOrders AS (
|
|
SELECT A.InvCode '物料编码',A.InvName '物料名称',A.VenCode '供应商编码',A.VenName '供应商名称',A.MTIME,sum(GS) GS FROM (SELECT DISTINCT
|
|
a.ASNCode,a.VenCode,c.VenName, 1 GS,
|
|
a.InvCode,b.InvName,b.InvStd,CONVERT(NVARCHAR(10),a.MTIME,120) MTIME,a.WorkPoint WorkPoint
|
|
FROM ICSDeliveryNotice a WITH (NOLOCK)
|
|
inner join ICSInventory b WITH (NOLOCK) on a.InvCode=b.InvCode and b.WorkPoint=a.WorkPoint
|
|
inner join ICSVendor c WITH (NOLOCK) on c.VenCode=a.VenCode and c.WorkPoint=a.WorkPoint
|
|
where a.DNType='1' AND a.MTIME BETWEEN '{beginTime}' AND '{endTime}'
|
|
UNION ALL
|
|
SELECT DISTINCT
|
|
a.OASNCode ASNCode,a.VenCode,c.VenName,1 GS,
|
|
a.InvCode,b.InvName,b.InvStd,CONVERT(NVARCHAR(10),a.MTIME,120) MTIME,a.WorkPoint WorkPoint
|
|
FROM ICSODeliveryNotice a WITH (NOLOCK)
|
|
inner join ICSInventory b WITH (NOLOCK) on a.InvCode=b.InvCode and b.WorkPoint=a.WorkPoint
|
|
inner join ICSVendor c WITH (NOLOCK) on c.VenCode=a.VenCode and c.WorkPoint=a.WorkPoint
|
|
where a.ODNType='1'AND a.MTIME BETWEEN '{beginTime}' AND '{endTime}' ) A
|
|
GROUP BY A.InvCode,A.InvName,A.VenCode,A.VenName,A.MTIME
|
|
|
|
),
|
|
PivotData AS (
|
|
SELECT
|
|
*
|
|
FROM
|
|
PurchaseOrders
|
|
)
|
|
-- 将数据插入临时表(如果需要,也可以直接使用CTE进行PIVOT)
|
|
SELECT * INTO #tempPivotData FROM PivotData
|
|
|
|
DECLARE @StartDate DATE = '{beginTime}';
|
|
DECLARE @EndDate DATE = '{endTime}';
|
|
|
|
WITH DateSequence AS (
|
|
SELECT @StartDate AS DateValue
|
|
UNION ALL
|
|
SELECT DATEADD(DAY, 1, DateValue)
|
|
FROM DateSequence
|
|
WHERE DateValue < @EndDate
|
|
)
|
|
SELECT CONVERT(NVARCHAR(50),DateValue,23) MTIME into #table1
|
|
FROM DateSequence
|
|
OPTION (MAXRECURSION 0)
|
|
|
|
-- 构建PIVOT查询的动态SQL
|
|
DECLARE @cols AS NVARCHAR(MAX)
|
|
SELECT @cols = STRING_AGG('[' + MTIME + ']', ',') WITHIN GROUP (ORDER BY MTIME)
|
|
FROM (SELECT MTIME FROM #table1) AS DateList
|
|
|
|
DECLARE @sql AS NVARCHAR(MAX)
|
|
SET @sql = '
|
|
SELECT * FROM (
|
|
SELECT
|
|
*
|
|
FROM
|
|
#tempPivotData
|
|
) AS SourceTable
|
|
PIVOT (
|
|
SUM(GS) FOR MTIME IN (' + @cols + ')
|
|
) AS PivotTable'
|
|
|
|
|
|
-- 执行动态SQL
|
|
EXEC sp_executesql @sql
|
|
|
|
-- 清理临时表
|
|
DROP TABLE #tempPivotData
|
|
DROP TABLE #table1
|
|
|
|
";
|
|
return SqlHelper.GetDataTableBySql(sql);
|
|
#endregion
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// api/Rd1011/Approve 调用产成品入库单、材料出库单审核
|
|
/// </summary>
|
|
public class ApproveInput
|
|
{
|
|
public string ID { get; set; }//ID
|
|
public string User { get; set; }//用户
|
|
public string Type { get; set; }//类型(入库,倒冲)
|
|
public string WorkPoint { get; set; }//站点
|
|
public bool UpdateStock { get; set; }//是否更新现存量
|
|
public DateTime MTime { get; set; }//时间
|
|
public bool UpdateTodoQuantity { get; set; }//更新待出入数量
|
|
}
|
|
}
|