using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using Curtain.DataAccess;
using Curtain.Log;
using System.Data;
using System.Drawing;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
///
/// Export 的摘要说明
///
public static class Export
{
public static Boolean getRunningFlag()
{
using (IDataAccess conn = DataAccess.Create())
{
String sqlStr = @"
SELECT
SETTINGVALUE
FROM
TP_MST_SYSTEMSETTING
WHERE
SETTINGCODE = 'S_PM_025'
";
object obj = conn.ExecuteScalar(sqlStr);
if (obj + "" == "0" )
{
return true;
}
else
{
return false;
}
}
}
public static void setRunning()
{
using (IDataAccess conn = DataAccess.Create())
{
String sqlStr = @"
UPDATE
TP_MST_SYSTEMSETTING
SET
SETTINGVALUE = '1'
WHERE
SETTINGCODE = 'S_PM_025'
";
int num = conn.ExecuteNonQuery(sqlStr);
if (num > 0) {
Curtain.Log.Logger.Debug("设置结转运行中!");
}
}
}
public static void setSleeping()
{
using (IDataAccess conn = DataAccess.Create())
{
String sqlStr = @"
UPDATE
TP_MST_SYSTEMSETTING
SET
SETTINGVALUE = '0'
WHERE
SETTINGCODE = 'S_PM_025'
";
int num = conn.ExecuteNonQuery(sqlStr);
if (num > 0)
{
Curtain.Log.Logger.Debug("设置结转等待中!");
}
}
}
#region 结转整理
public static void export001()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export001注浆产品存坯汇总表结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete AJZ_RPT001_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @" INSERT INTO AJZ_RPT001_M SELECT * FROM
(
SELECT
T.GOODSID AS 产品ID,
DECODE(GROUPING_ID ( T.GOODSTYPECODE2, T.GOODSID ),3,'总计',1,'合计[' || T.GOODSTYPENAME2 || ']',T.GOODSTYPENAME2 ) AS 产品大类,
T.GOODSTYPENAME AS 产品类别,
T.GOODSCODE AS 产品编码,
'0' AS 工号,
SUM( T.RDCOUNT ) AS 存坯数,
T.GLDCOUNT AS 模具数,
T.RDDAYS AS 存坯天数,
T.RESERVEDDAYS AS 应存天数,
SUM( T.PROFITNUM ) AS 盈亏坯数 ,
'0' AS 产品小类,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
GT2.GOODSTYPECODE GOODSTYPECODE2,
GT2.GOODSTYPENAME GOODSTYPENAME2,
GDRD.GOODSID,
GDRD.GOODSCODE,
GDRD.GOODSTYPENAME,
GDRD.GDDC RDCOUNT, -- 存坯数
RDD.GLDCOUNT, -- 模具数
CASE WHEN RDD.GLDCOUNT IS NOT NULL AND RDD.GLDCOUNT > 0 THEN ROUND( GDRD.GDDC / RDD.GLDCOUNT, 2 ) ELSE NULL END RDDAYS, -- 存坯天数
GDRD.RESERVEDDAYS, -- 应存天数
( GDRD.GDDC - GDRD.RESERVEDDAYS * RDD.GLDCOUNT ) PROFITNUM --盈亏坯数
FROM
(
SELECT
GDD.GOODSID,
GDD.GOODSCODE,
G.RESERVEDDAYS,
SUBSTR( GT.GOODSTYPECODE, 1, 6 ) GOODSTYPECODE2,
GT.GOODSTYPENAME,
COUNT( * ) GDDC
FROM
TP_PM_GROUTINGDAILYDETAIL GDD
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
WHERE
GDD.ACCOUNTID = 1
AND GDD.VALUEFLAG = '1'
AND GDD.GROUTINGFLAG = '1'
AND GDD.BARCODE IS NOT NULL
AND GDD.SCRAPFLAG = '0'
AND GDD.DELIVERFLAG = '0'
--查询条件
-- AND (GDD.GROUTINGDATE BETWEEN to_date(@DATEBEGIN@,'yyyy-mm-dd') AND to_date(@DATEEND@,'yyyy-mm-dd'))
AND GDD.GROUTINGDATE >= @DATEBEGIN@
AND GDD.GROUTINGDATE <= @DATEEND@
GROUP BY
GT.GOODSTYPECODE,
GT.GOODSTYPENAME,
GDD.GOODSID,
GDD.GOODSCODE,
G.RESERVEDDAYS
) GDRD
LEFT JOIN (
SELECT
GLD.GOODSID,
COUNT( * ) GLDCOUNT
FROM
TP_PC_GROUTINGLINEDETAIL GLD
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = GLD.GROUTINGLINEID
WHERE
GLD.VALUEFLAG = '1'
AND GLD.GMOULDSTATUS = 1
AND GL.VALUEFLAG = '1'
AND GL.GMOULDSTATUS = 1
GROUP BY
GLD.GOODSID
) RDD ON RDD.GOODSID = GDRD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT2 ON GT2.ACCOUNTID = 1
AND GT2.GOODSTYPECODE = GDRD.GOODSTYPECODE2
ORDER BY
GT2.GOODSTYPECODE,
GDRD.GOODSCODE
) T
GROUP BY
GROUPING SETS (
(T.GOODSTYPECODE2,T.GOODSTYPENAME2,T.GOODSTYPENAME,T.GOODSID,T.GOODSCODE,T.GLDCOUNT,T.RDDAYS,T.RESERVEDDAYS),
(T.GOODSTYPECODE2, T.GOODSTYPENAME2),
( )
)
) D WHERE D.产品编码 IS NOT NULL
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
String Str = @"delete AJZ_RPT001_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
String sqlStr2 = @"
INSERT INTO AJZ_RPT001_D
SELECT
GDD.BARCODE AS 产品条码,
GDD.GROUTINGLINECODE AS 成型线号,
GDD.GROUTINGMOULDCODE AS 模具编号,
GDD.GOODSCODE AS 产品编码,
GDD.USERCODE AS 成型工号,
TO_CHAR(GDD.GROUTINGDATE,'yyyy-mm-dd') AS 注浆日期,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
TP_PM_GROUTINGDAILYDETAIL GDD
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
WHERE
GDD.VALUEFLAG = '1'
AND GDD.GROUTINGFLAG = '1'
AND GDD.BARCODE IS NOT NULL
AND GDD.SCRAPFLAG = '0'
AND GDD.DELIVERFLAG = '0'
AND GDD.GROUTINGDATE >= @DATEBEGIN@
AND GDD.GROUTINGDATE <= @DATEEND@
";
List sqlPara1 = new List();
sqlPara1.Add(new CDAParameter("I", i));
sqlPara1.Add(new CDAParameter("YEAR", b));
sqlPara1.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara1.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 = conn.ExecuteNonQuery(sqlStr2, sqlPara1.ToArray());
}
conn.Commit();
if (result > 0 && result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export001注浆产品存坯汇总表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export001注浆产品存坯汇总表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export001注浆产品存坯汇总表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export002()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export002成型工号存坯汇总表结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete AJZ_RPT002_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
String Str = @"delete AJZ_RPT002_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @"
INSERT INTO AJZ_RPT002_M SELECT * FROM (SELECT
--GROUPING_ID ( T.GOODSTYPECODE2, T.GOODSID ) GID,
--T.GOODSTYPECODE2,
T.GOODSID AS 产品ID,
DECODE(GROUPING_ID ( T.GOODSTYPECODE2, T.GOODSID ),3,'总计',1,'合计[' || T.GOODSTYPENAME2 || ']',T.GOODSTYPENAME2 ) AS 产品类别,
T.GOODSCODE AS 产品编码,
--T.GROUTINGLINEID AS 成型线ID,
T.GROUTINGLINECODE AS 成型线号,
--T.USERID AS 用户ID,
T.USERCODE AS 成型工号,
SUM( T.RDCOUNT ) AS 存坯数,
T.GLDCOUNT AS 模具数,
T.RDDAYS AS 存坯天数,
T.RESERVEDDAYS AS 应存天数,
SUM( T.PROFITNUM ) AS 盈亏坯数 ,
'0' as GOODSTYPECODE,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
GT2.GOODSTYPECODE GOODSTYPECODE2,
GT2.GOODSTYPENAME GOODSTYPENAME2,
GDRD.GOODSID,
GDRD.GOODSCODE,
GDRD.GROUTINGLINEID,
GDRD.GROUTINGLINECODE,
GDRD.USERID,
GDRD.USERCODE,
GDRD.GDDC RDCOUNT, -- 存坯数
RDD.GLDCOUNT, -- 模具数
CASE WHEN RDD.GLDCOUNT IS NOT NULL AND RDD.GLDCOUNT > 0 THEN ROUND( GDRD.GDDC / RDD.GLDCOUNT, 2 ) ELSE NULL END RDDAYS, -- 存坯天数
GDRD.RESERVEDDAYS, -- 应存天数
( GDRD.GDDC - GDRD.RESERVEDDAYS * RDD.GLDCOUNT ) PROFITNUM --盈亏坯数
FROM
(
SELECT
GDD.GOODSID,
GDD.GOODSCODE,
GDD.GROUTINGLINEID,
GDD.GROUTINGLINECODE,
GDD.USERID,
GDD.USERCODE,
G.RESERVEDDAYS,
SUBSTR( GT.GOODSTYPECODE, 1, 6 ) GOODSTYPECODE2,
COUNT( * ) GDDC
FROM
TP_PM_GROUTINGDAILYDETAIL GDD
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
WHERE
GDD.VALUEFLAG = '1'
AND GDD.GROUTINGFLAG = '1'
AND GDD.BARCODE IS NOT NULL
AND GDD.SCRAPFLAG = '0'
AND GDD.DELIVERFLAG = '0'
-- AND (@DATEBEGIN@ IS NULL OR GDD.GROUTINGDATE BETWEEN to_date(@DATEBEGIN@,'yyyy-mm-dd') AND to_date(@DATEEND@,'yyyy-mm-dd'))
AND GDD.GROUTINGDATE >= @DATEBEGIN@
AND GDD.GROUTINGDATE <= @DATEEND@
GROUP BY
GT.GOODSTYPECODE,
GDD.GOODSID,
GDD.GOODSCODE,
GDD.GROUTINGLINEID,
GDD.GROUTINGLINECODE,
GDD.USERID,
GDD.USERCODE,
G.RESERVEDDAYS
) GDRD
LEFT JOIN (
SELECT
GLD.GOODSID,
GLD.GROUTINGLINEID,
COUNT( * ) GLDCOUNT
FROM
TP_PC_GROUTINGLINEDETAIL GLD
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = GLD.GROUTINGLINEID
WHERE
GLD.VALUEFLAG = '1'
AND GLD.GMOULDSTATUS = 1
AND GL.ACCOUNTID = 1
AND GL.VALUEFLAG = '1'
AND GL.GMOULDSTATUS = 1
GROUP BY
GLD.GOODSID,
GLD.GROUTINGLINEID
) RDD ON RDD.GOODSID = GDRD.GOODSID
AND RDD.GROUTINGLINEID = GDRD.GROUTINGLINEID
INNER JOIN TP_MST_GOODSTYPE GT2 ON GT2.ACCOUNTID = 1
AND GT2.GOODSTYPECODE = GDRD.GOODSTYPECODE2
ORDER BY
GT2.GOODSTYPECODE,
GDRD.GOODSCODE,
GDRD.GROUTINGLINECODE,
GDRD.USERCODE
) T
GROUP BY
GROUPING SETS (
(T.GOODSTYPECODE2,T.GOODSTYPENAME2,T.GOODSID,T.GOODSCODE,T.GROUTINGLINEID,T.GROUTINGLINECODE,T.USERID,T.USERCODE,T.GLDCOUNT,T.RDDAYS,T.RESERVEDDAYS),
(T.GOODSTYPECODE2, T.GOODSTYPENAME2),
( )
)
)D WHERE D.产品编码 IS not null
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
String sqlStr2 = @"INSERT INTO AJZ_RPT002_D SELECT
GDD.BARCODE AS 产品条码,
GDD.GROUTINGLINECODE AS 成型线号,
GDD.GROUTINGMOULDCODE AS 模具编号,
GDD.GOODSCODE AS 产品编码,
GDD.USERCODE AS 成型工号,
TO_CHAR(GDD.GROUTINGDATE,'yyyy-mm-dd') AS 注浆日期,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
TP_PM_GROUTINGDAILYDETAIL GDD
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
WHERE
GDD.VALUEFLAG = '1'
AND GDD.GROUTINGFLAG = '1'
AND GDD.BARCODE IS NOT NULL
AND GDD.SCRAPFLAG = '0'
AND GDD.DELIVERFLAG = '0'
-- AND (@DATEBEGIN@ IS NULL OR GDD.GROUTINGDATE BETWEEN @DATEBEGIN@ AND @DATEEND@)
AND GDD.GROUTINGDATE >= @DATEBEGIN@
AND GDD.GROUTINGDATE <= @DATEEND@
";
List sqlPara1 = new List();
sqlPara1.Add(new CDAParameter("I", i));
sqlPara1.Add(new CDAParameter("YEAR", b));
sqlPara1.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara1.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 = conn.ExecuteNonQuery(sqlStr2, sqlPara1.ToArray());
}
conn.Commit();
if (result > 0 && result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export002成型工号存坯汇总表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export002成型工号存坯汇总表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export002成型工号存坯汇总表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export006()
{
using (IDataAccess conn = DataAccess.Create())
{
//2021-07-12 dongyan 修正什么问题
Curtain.Log.Logger.Debug("export006员工出勤汇总表结转开始!");
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
conn.Open();
conn.BeginTransaction();
try
{
String sqlStr = @"delete AJZ_RPT006_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
String Str = @"delete AJZ_RPT006_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
String sqlStr1 = @"
insert into AJZ_RPT006_M
SELECT
U.USERID,
F.STAFFID,
O.ORGANIZATIONNAME AS 部门,
U.USERCODE AS 工号,
F.STAFFCODE AS 员工编码,
F.STAFFNAME AS 员工姓名,
CQ.CQTS AS 出勤天数,
ZCL.ZCLS AS 总产量,
HGL.CYS AS 出窑数,
HGL.BHGL AS 不合格率 ,
O.ORGANIZATIONCODE,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0')),
0
FROM
(
-- 统计出勤
SELECT
T.STAFFID,
T.USERID,
COUNT( * ) AS CQTS
FROM
(
SELECT DISTINCT
CD.USERID,
CD.STAFFID,
C.ACCOUNTDATE
FROM
TP_PC_CLASSESDETAIL CD
INNER JOIN TP_PC_CLASSESSETTING C ON C.CLASSESSETTINGID = CD.CLASSESSETTINGID
INNER JOIN TP_MST_USER U ON U.USERID = CD.USERID
INNER JOIN TP_MST_ORGANIZATION ORG ON ORG.ORGANIZATIONID = U.ORGANIZATIONID
WHERE
C.ACCOUNTDATE >= @DATEBEGIN@
AND C.ACCOUNTDATE < @DATEEND@
) T
GROUP BY
T.USERID,
T.STAFFID
) CQ
LEFT JOIN (
--总产量
SELECT
CD.STAFFID,
CD.USERID,
COUNT( * ) AS ZCLS
FROM
TP_PM_PRODUCTIONDATA PD
INNER JOIN TP_PC_CLASSESDETAIL CD ON CD.CLASSESSETTINGID = PD.CLASSESSETTINGID
WHERE
PD.VALUEFLAG = '1'
AND PD.CREATETIME >= @DATEBEGIN@
AND PD.CREATETIME < @DATEEND@
GROUP BY
CD.USERID,
CD.STAFFID
) ZCL ON CQ.USERID = ZCL.USERID
AND CQ.STAFFID = ZCL.STAFFID
FULL JOIN (
--不合格率
SELECT
P.STAFFID,
P.USERID,
COUNT( * ) AS CYS,
ROUND( SUM( DECODE( P.GOODSLEVELTYPEID, 6, 1, 7, 1, 0 ) ) / COUNT( * ), 4 ) AS BHGL
FROM
(
SELECT DISTINCT
CD.STAFFID,
CD.USERID,
T.GOODSLEVELTYPEID,
T.BARCODE
FROM
( SELECT BARCODE, GOODSLEVELTYPEID FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 13 AND VALUEFLAG = '1' AND CHECKBATCHNO = 1 AND CHECKTIME >= @DATEBEGIN@ AND CHECKTIME < @DATEEND@ ) T
INNER JOIN TP_PM_PRODUCTIONDATA PD ON T.BARCODE = PD.BARCODE
INNER JOIN TP_PC_CLASSESDETAIL CD ON CD.CLASSESSETTINGID = PD.CLASSESSETTINGID
INNER JOIN TP_MST_USER U ON U.USERID = CD.USERID
INNER JOIN TP_MST_ORGANIZATION ORG ON ORG.ORGANIZATIONID = U.ORGANIZATIONID
WHERE
PD.KILNCARBATCHNO IS NULL
AND PD.VALUEFLAG = '1'
) P
GROUP BY
P.STAFFID,
P.USERID
) HGL ON HGL.USERID = CQ.USERID
AND HGL.STAFFID = CQ.STAFFID
INNER JOIN TP_HR_STAFF F ON F.STAFFID = NVL( CQ.STAFFID, HGL.STAFFID )
INNER JOIN TP_MST_USER U ON U.USERID = NVL( CQ.USERID, HGL.USERID )
INNER JOIN TP_MST_ORGANIZATION O ON U.ORGANIZATIONID = O.ORGANIZATIONID
";
List sqlPara1 = new List();
sqlPara1.Add(new CDAParameter("I", i));
sqlPara1.Add(new CDAParameter("YEAR", b));
sqlPara1.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara1.Add(new CDAParameter("DATEBEGIN", dayBegin));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara1.ToArray());
String sqlStr2 = @"INSERT INTO AJZ_RPT006_D
select * from (
SELECT
--TO_CHAR(CQ.日期,'yyyy-mm-dd') as 日期,
O.ORGANIZATIONNAME as 部门,
U.USERCODE 工号,
F.STAFFCODE 员工编码,
F.STAFFNAME 员工姓名,
ZCL.产品,
ZCL.产量,
ZCL.产量出窑数,
ZCL.产量合格数,
'0' as STAFFID,
'0',
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
/*(
-- 统计出勤
SELECT DISTINCT
S.USERID AS 用户ID,
CD.STAFFID AS 员工ID
--,TRUNC(S.ACCOUNTDATE) AS 日期
FROM
TP_PC_CLASSESSETTING S
INNER JOIN TP_PC_CLASSESDETAIL CD ON CD.CLASSESSETTINGID = S.CLASSESSETTINGID
WHERE
S.ACCOUNTDATE >= @DATEBEGIN@
AND S.ACCOUNTDATE < @DATEEND@
) CQ
LEFT JOIN */
(
--产量
SELECT --DISTINCT
--TRUNC(PD.CREATETIME) AS 日期,
CD.STAFFID AS 员工ID,
CD.USERID AS 用户ID,
PD.GOODSCODE AS 产品,
COUNT(DISTINCT PD.PRODUCTIONDATAID) AS 产量,
SUM(DECODE(OUTK.PRODUCTIONDATAID, NULL ,0 ,1)) 产量出窑数,
SUM(DECODE(OUTK.GOODSLEVELTYPEID, 4 ,1 ,5, 1, 0)) 产量合格数
FROM
TP_PM_PRODUCTIONDATA PD
INNER JOIN TP_PC_CLASSESDETAIL CD ON CD.CLASSESSETTINGID = PD.CLASSESSETTINGID
--INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.CLASSESSETTINGID = S.CLASSESSETTINGID
LEFT JOIN TP_PM_PRODUCTIONDATA OUTK ON OUTK.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
AND OUTK.VALUEFLAG = '1' AND OUTK.PROCEDUREID = 13 AND OUTK.ISREFIRE = '0'
WHERE
PD.VALUEFLAG = '1'
AND PD.CREATETIME >= @DATEBEGIN@
AND PD.CREATETIME < @DATEEND@
GROUP BY
--TRUNC(PD.CREATETIME),
CD.USERID,
CD.STAFFID,
PD.GOODSCODE
) ZCL --ON CQ.员工ID =ZCL.员工ID AND CQ.用户ID = ZCL.用户ID --AND TRUNC(CQ.日期) = TRUNC(ZCL.日期)
INNER JOIN TP_HR_STAFF F ON F.STAFFID = ZCL.员工ID
INNER JOIN TP_MST_USER U ON U.USERID = ZCL.用户ID
INNER JOIN TP_MST_ORGANIZATION O ON U.ORGANIZATIONID = O.ORGANIZATIONID
)";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 += conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
}
conn.Commit();
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export006员工出勤汇总表结转失败!");
}
finally
{
conn.Close();
}
if (result > 0 && result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export006员工出勤汇总表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export006员工出勤汇总表结转0条!");
}
}
}
public static void export008()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export008 产品合格数统计表结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete AJZ_RPT008 WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @" INSERT INTO AJZ_RPT008
SELECT
BUILDINGNO,
GOODSCODE,
GOODSNAME ,
GOODSMODEL ,
DICTIONARYVALUE ,
LOGONAME ,
OUT_K_B ,
OUT_K_R ,
OK_B ,
OK_R ,
OK_H ,
OK_ALL ,
OK_COUNT ,
OUT_K_ALL ,
END_B ,
END_R ,
END_H ,
END_ALL ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0')),
GLAZETYPEID,
LOGOID
FROM
(
SELECT
DECODE(GID, 3, T.楼号 || '合计' , 15, T.楼号 || '合计', T.楼号) AS BUILDINGNO
,DECODE(GID, 15, '--', T.产品编码) AS GOODSCODE
,DECODE(GID, 15, '--', T.产品名称) AS GOODSNAME
,DECODE(GID, 15, '--', T.产品型号) AS GOODSMODEL
,DECODE(GID, 3, '--' , 15, '--', T.釉料) AS DICTIONARYVALUE
,DECODE(GID, 3, '--' , 15, '--', T.商标) AS LOGONAME
,T.出窑数_本烧 AS OUT_K_B
,T.出窑数_重烧 AS OUT_K_R
,T.合格数_本烧 AS OK_B
,T.合格数_重烧 AS OK_R
,T.合格数_回收 AS OK_H
,T.合格数_合计 AS OK_ALL
,NVL(ROUND(T.合格数_合计 / DECODE(T.出窑数, 0, 1, T.出窑数), 4) * 100, 0) || '%' AS OK_COUNT
,T.包装数_本烧 AS END_B
,T.包装数_重烧 AS END_R
,T.包装数_回收 AS END_H
,T.包装数_合计 AS END_ALL
,T.出窑数 AS OUT_K_ALL
,T.釉料ID AS GLAZETYPEID
,T.商标ID AS LOGOID
FROM (SELECT GROUPING_ID(L.BUILDINGNO, M.GOODSID, D.DICTIONARYVALUE, O.LOGONAME) AS GID
,L.BUILDINGNO AS 楼号
,M.GOODSID AS 产品ID
,M.GOODSCODE AS 产品编码
,M.GOODSNAME AS 产品名称
,M.GOODSMODEL AS 产品型号
,G.GLAZETYPEID AS 釉料ID
,D.DICTIONARYVALUE AS 釉料
,G.LOGOID AS 商标ID
,O.LOGONAME AS 商标
,SUM(TF.OUT_K_B) AS 出窑数_本烧
,SUM(TF.OUT_K_R) AS 出窑数_重烧
,SUM(TF.OUT_K_ALL) AS 出窑数
,SUM(TF.OK_B) AS 合格数_本烧
,SUM(TF.OK_R) AS 合格数_重烧
,SUM(TF.OK_H) AS 合格数_回收
,SUM(TF.OK_ALL) AS 合格数_合计
,SUM(TF.END_B) 包装数_本烧
,SUM(TF.END_R) 包装数_重烧
,SUM(TF.END_H) 包装数_回收
,SUM(TF.END_ALL) 包装数_合计
FROM (SELECT 1 FLAG
,TP.GROUTINGDAILYDETAILID
,decode(TP.PROCEDUREID, 13, 1, 0) OUT_K_B
,decode(TP.PROCEDUREID, 35, 1, 0) OUT_K_R
,1 OUT_K_ALL
,0 OK_B
,0 OK_R
,0 OK_H
,0 OK_ALL
,0 END_B
,0 END_R
,0 END_H
,0 END_ALL
FROM TP_PM_PRODUCTIONDATA TP
WHERE TP.PROCEDUREID IN (13, 35)
AND TP.Checkflag = 1
AND TP.Createtime >= @DATEBEGIN@
AND TP.Createtime <= @DATEEND@
UNION ALL
SELECT 2 FLAG
,P.GROUTINGDAILYDETAILID
,0 OUT_K_B
,0 OUT_K_R
,0 OUT_K_ALL
,CASE
WHEN P.PROCEDUREID = 13 AND
RPD.Productiondataid IS NULL THEN
1
ELSE
0
END OK_B
,CASE
WHEN P.PROCEDUREID = 35 AND
RPD.Productiondataid IS NULL THEN
1
ELSE
0
END OK_R
,CASE
WHEN RPD.Productiondataid IS NOT NULL THEN
1
ELSE
0
END OK_H
,1 OK_ALL
,0 END_B
,0 END_R
,0 END_H
,0 END_ALL
FROM (SELECT TP.PRODUCTIONDATAID
,TP.GROUTINGDAILYDETAILID
,TP.PROCEDUREID
,MAX(PMAX.PRODUCTIONDATAID) AS MAXPRODUCTIONDATAID
FROM TP_PM_PRODUCTIONDATA TP
LEFT JOIN TP_PM_PRODUCTIONDATA PMAX
ON PMAX.GROUTINGDAILYDETAILID = TP.GROUTINGDAILYDETAILID
AND PMAX.PRODUCTIONDATAID < TP.PRODUCTIONDATAID
AND PMAX.VALUEFLAG = '1'
WHERE TP.CHECKBATCHNO = 1
AND TP.GOODSLEVELTYPEID IN (4, 5)
AND TP.PROCEDUREID IN (13, 35)
AND TP.CREATETIME >= @DATEBEGIN@
AND TP.CREATETIME <= @DATEEND@
GROUP BY TP.PRODUCTIONDATAID
,TP.GROUTINGDAILYDETAILID
,TP.PROCEDUREID) P
LEFT JOIN TP_PM_PRODUCTIONDATA RPD
ON RPD.PRODUCTIONDATAID = P.MAXPRODUCTIONDATAID
AND RPD.Procedureid IN (20, 22, 23, 37)
UNION ALL
SELECT 3 FLAG
,fp.groutingdailydetailid
,0 OUT_K_B
,0 OUT_K_R
,0 OUT_K_ALL
,0 OK_B
,0 OK_R
,0 OK_H
,0 OK_ALL
,CASE
WHEN SUM(CASE
WHEN fp.isrefire = '6' OR
p.productiondataid IS NOT NULL THEN
0
ELSE
1
END) > 0 THEN
1
ELSE
0
END END_B
,CASE
WHEN SUM(CASE
WHEN fp.isrefire = '0' OR
p.productiondataid IS NOT NULL THEN
0
ELSE
1
END) > 0 THEN
1
ELSE
0
END END_R
,CASE
WHEN SUM(CASE
WHEN p.productiondataid IS NULL THEN
0
ELSE
1
END) > 0 THEN
1
ELSE
0
END END_H
,1 END_ALL
FROM tp_pm_finishedproduct fp
LEFT JOIN tp_pm_productiondata p
ON p.groutingdailydetailid = fp.groutingdailydetailid
AND p.procedureid IN (20, 22, 23, 37)
WHERE fp.createtime >= @DATEBEGIN@
AND fp.createtime <= @DATEEND@
GROUP BY fp.groutingdailydetailid) TF
LEFT JOIN TP_PM_GROUTINGDAILYDETAIL G
ON TF.GROUTINGDAILYDETAILID = G.GROUTINGDAILYDETAILID
LEFT JOIN TP_PC_GROUTINGLINE L
ON G.GROUTINGLINEID = L.GROUTINGLINEID
LEFT JOIN TP_MST_DATADICTIONARY D
ON G.GLAZETYPEID = D.DICTIONARYID
LEFT JOIN TP_MST_LOGO O
ON G.LOGOID = O.LOGOID
LEFT JOIN TP_MST_GOODS M
ON G.GOODSID = M.GOODSID
GROUP BY GROUPING SETS((L.BUILDINGNO, M.GOODSID, M.GOODSCODE, M.GOODSNAME, M.GOODSMODEL, G.GLAZETYPEID, G.LOGOID, D.DICTIONARYVALUE, O.LOGONAME),(L.BUILDINGNO, M.GOODSID, M.GOODSCODE, M.GOODSNAME, M.GOODSMODEL),())
ORDER BY L.BUILDINGNO
,M.GOODSCODE
,GID) T
)
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export008产品合格数统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export008产品合格数统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export008产品合格数统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export009()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export009 产品质量统计表结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string sqlStr = @"delete AJZ_RPT009 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
string sqlStr1 = @" INSERT INTO AJZ_RPT009
SELECT * FROM (
SELECT
A.日期,
A.楼号,
NVL(A.本烧隧道窑_出窑数,0) AS 本烧隧道窑_出窑数,
--NVL(A.本烧隧道窑_合格量 - A.本烧隧道窑_AA合格,0) AS 本烧隧道窑_合格量123,
NVL(A.本烧隧道窑_合格量 - A.本烧隧道窑_AA合格 - A.本烧隧道窑_漏气研磨刷洗,0) AS 本烧隧道窑_合格量,
NVL(A.本烧隧道窑_漏气合格,0) AS 本烧隧道窑_漏气合格,
NVL(A.本烧隧道窑_研磨合格,0) AS 本烧隧道窑_研磨合格,
NVL(A.本烧隧道窑_刷洗合格,0) AS 本烧隧道窑_刷洗合格,
NVL(A.本烧隧道窑_AA合格,0) AS 本烧隧道窑_AA合格,
NVL(ROUND((A.本烧隧道窑_合格量) /
DECODE(A.本烧隧道窑_出窑数,0,1,A.本烧隧道窑_出窑数),4) * 100,0) AS 本烧隧道窑_合格率,
NVL(A.本烧梭式窑_出窑数,0) AS 本烧梭式窑_出窑数,
--NVL(A.本烧梭式窑_合格量 - A.本烧梭式窑_AA合格,0) AS 本烧梭式窑_合格量123,
NVL(A.本烧梭式窑_合格量 - A.本烧梭式窑_AA合格 - A.本烧梭式窑_漏气研磨刷洗,0) AS 本烧梭式窑_合格量,
NVL(A.本烧梭式窑_漏气合格,0) AS 本烧梭式窑_漏气合格,
NVL(A.本烧梭式窑_研磨合格,0) AS 本烧梭式窑_研磨合格,
NVL(A.本烧梭式窑_刷洗合格,0) AS 本烧梭式窑_刷洗合格,
NVL(A.本烧梭式窑_AA合格,0) AS 本烧梭式窑_AA合格,
NVL(ROUND((A.本烧梭式窑_合格量) /
DECODE(A.本烧梭式窑_出窑数,0,1,A.本烧梭式窑_出窑数),4) * 100,0) AS 本烧梭式窑_合格率,
NVL(A.本烧合计_出窑数,0) AS 本烧合计_出窑数,
--NVL(A.本烧合计_合格量 - A.本烧合计_AA合格,0) AS 本烧合计_合格量123,
NVL(A.本烧合计_合格量 - A.本烧合计_AA合格 - A.本烧合计_漏气研磨刷洗,0) AS 本烧合计_合格量,
NVL(A.本烧合计_漏气合格,0) AS 本烧合计_漏气合格,
NVL(A.本烧合计_研磨合格,0) AS 本烧合计_研磨合格,
NVL(A.本烧合计_刷洗合格,0) AS 本烧合计_刷洗合格,
NVL(A.本烧合计_AA合格,0) AS 本烧合计_AA合格,
NVL(ROUND((A.本烧合计_合格量) /
DECODE(A.本烧合计_出窑数,0,1,A.本烧合计_出窑数),4) * 100,0) AS 本烧合计_合格率,
NVL(A.重烧_出窑数,0) AS 重烧_出窑数,
--NVL(A.重烧_合格量 - A.重烧_AA合格,0) AS 重烧_合格量123,
NVL(A.重烧_合格量 - A.重烧_AA合格 - A.重烧_漏气研磨刷洗,0) AS 重烧_合格量,
NVL(A.重烧_漏气合格,0) AS 重烧_漏气合格,
NVL(A.重烧_研磨合格,0) AS 重烧_研磨合格,
NVL(A.重烧_刷洗合格,0) AS 重烧_刷洗合格,
NVL(A.重烧_AA合格,0) AS 重烧_AA合格,
NVL(ROUND((A.重烧_合格量) /
DECODE(A.重烧_出窑数,0,1,A.重烧_出窑数),4) * 100,0) AS 重烧_合格率,
NVL(A.综合_出窑数,0) - NVL(A.重烧_出窑数,0) AS 综合_出窑数,
NVL(A.综合_合格量 - A.综合_AA合格 - A.综合_漏气研磨刷洗,0) AS 综合_合格量,
NVL(A.综合_漏气合格,0) AS 综合_漏气合格,
NVL(A.综合_研磨合格,0) AS 综合_研磨合格,
NVL(A.综合_刷洗合格,0) AS 综合_刷洗合格,
NVL(A.综合_AA合格,0) AS 综合_AA合格,
NVL(ROUND((A.综合_合格量) /
DECODE(A.综合_出窑数,0,1,A.综合_出窑数 - A.重烧_出窑数),4) * 100,0) AS 综合_合格率,
NVL(A.本烧隧道窑_合格量,0) AS 本烧隧道窑_合格数1,
NVL(A.本烧梭式窑_合格量,0) AS 本烧梭式窑_合格量1,
NVL(A.本烧合计_合格量,0) AS 本烧合计_合格量1,
NVL(A.重烧_合格量,0) AS 重烧_合格量1,
NVL(A.综合_合格量,0) AS 综合_合格量1,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
DECODE(GROUPING_ID(C.CDATE, C.BUILDINGNO),0,TO_CHAR(C.CDATE, 'YYYY-MM-DD'),'合计') AS 日期,
DECODE(GROUPING_ID(C.CDATE, C.BUILDINGNO), 0, C.BUILDINGNO, '--') AS 楼号,
SUM(CASE WHEN C.MAXPRODUCTIONDATAID = -1 AND C.PROCEDUREID = 13 AND C.KILNID IN (2, 4) THEN C.CNUM ELSE 0 END) AS 本烧隧道窑_出窑数,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (2, 4) THEN C.CNUM ELSE 0 END) AS 本烧隧道窑_合格量,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (2, 4) AND C.P2 IN (22,23) THEN C.CNUM ELSE 0 END) AS 本烧隧道窑_AA合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (2, 4) AND C.P2 IN (37,20,41) THEN C.CNUM ELSE 0 END) AS 本烧隧道窑_漏气研磨刷洗,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (2, 4) AND C.P2 = 37 THEN C.CNUM ELSE 0 END) AS 本烧隧道窑_漏气合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (2, 4) AND C.P2 = 20 THEN C.CNUM ELSE 0 END) AS 本烧隧道窑_研磨合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (2, 4) AND C.P2 = 41 THEN C.CNUM ELSE 0 END) AS 本烧隧道窑_刷洗合格,
SUM(CASE WHEN C.MAXPRODUCTIONDATAID = -1 AND C.PROCEDUREID = 13 AND C.KILNID IN (1, 3) THEN C.CNUM ELSE 0 END) AS 本烧梭式窑_出窑数,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (1, 3) THEN C.CNUM ELSE 0 END) AS 本烧梭式窑_合格量,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (1, 3) AND C.P2 IN (22,23) THEN C.CNUM ELSE 0 END) AS 本烧梭式窑_AA合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (1, 3) AND C.P2 IN (37,20,41) THEN C.CNUM ELSE 0 END) AS 本烧梭式窑_漏气研磨刷洗,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (1, 3) AND C.P2 = 37 THEN C.CNUM ELSE 0 END) AS 本烧梭式窑_漏气合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (1, 3) AND C.P2 = 20 THEN C.CNUM ELSE 0 END) AS 本烧梭式窑_研磨合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.KILNID IN (1, 3) AND C.P2 = 41 THEN C.CNUM ELSE 0 END) AS 本烧梭式窑_刷洗合格,
SUM(CASE WHEN C.MAXPRODUCTIONDATAID = -1 AND C.PROCEDUREID = 13 THEN C.CNUM ELSE 0 END) AS 本烧合计_出窑数,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) THEN C.CNUM ELSE 0 END) AS 本烧合计_合格量,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 IN (22,23) THEN C.CNUM ELSE 0 END) AS 本烧合计_AA合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 IN (37,20,41) THEN C.CNUM ELSE 0 END) AS 本烧合计_漏气研磨刷洗,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 37 THEN C.CNUM ELSE 0 END) AS 本烧合计_漏气合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 20 THEN C.CNUM ELSE 0 END) AS 本烧合计_研磨合格,
SUM(CASE WHEN C.PROCEDUREID = 13 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 41 THEN C.CNUM ELSE 0 END) AS 本烧合计_刷洗合格,
SUM(CASE WHEN C.MAXPRODUCTIONDATAID = -1 AND C.PROCEDUREID = 35 THEN C.CNUM ELSE 0 END) AS 重烧_出窑数,
SUM(CASE WHEN C.PROCEDUREID = 35 AND C.GOODSLEVELTYPEID IN (4, 5) THEN C.CNUM ELSE 0 END) AS 重烧_合格量 ,
SUM(CASE WHEN C.PROCEDUREID = 35 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 IN (22,23) THEN C.CNUM ELSE 0 END) AS 重烧_AA合格,
SUM(CASE WHEN C.PROCEDUREID = 35 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 IN (37,20,41) THEN C.CNUM ELSE 0 END) AS 重烧_漏气研磨刷洗,
SUM(CASE WHEN C.PROCEDUREID = 35 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 37 THEN C.CNUM ELSE 0 END) AS 重烧_漏气合格,
SUM(CASE WHEN C.PROCEDUREID = 35 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 20 THEN C.CNUM ELSE 0 END) AS 重烧_研磨合格,
SUM(CASE WHEN C.PROCEDUREID = 35 AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 41 THEN C.CNUM ELSE 0 END) AS 重烧_刷洗合格,
SUM(CASE WHEN C.MAXPRODUCTIONDATAID = -1 AND C.PROCEDUREID IN (13, 35) THEN C.CNUM ELSE 0 END) AS 综合_出窑数,
SUM(CASE WHEN C.PROCEDUREID IN (13, 35) AND C.GOODSLEVELTYPEID IN (4, 5) THEN C.CNUM ELSE 0 END) AS 综合_合格量,
SUM(CASE WHEN C.PROCEDUREID IN (13, 35) AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 IN (22,23) THEN C.CNUM ELSE 0 END) AS 综合_AA合格,
SUM(CASE WHEN C.PROCEDUREID IN (13, 35) AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 IN (37,20,41) THEN C.CNUM ELSE 0 END) AS 综合_漏气研磨刷洗,
SUM(CASE WHEN C.PROCEDUREID IN (13, 35) AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 37 THEN C.CNUM ELSE 0 END) AS 综合_漏气合格,
SUM(CASE WHEN C.PROCEDUREID IN (13, 35) AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 20 THEN C.CNUM ELSE 0 END) AS 综合_研磨合格,
SUM(CASE WHEN C.PROCEDUREID IN (13, 35) AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 = 41 THEN C.CNUM ELSE 0 END) AS 综合_刷洗合格
FROM
(
SELECT
T.CDATE,
T.GROUTINGLINEID,
T.KILNID,
T.PROCEDUREID,
T.GOODSLEVELTYPEID,
T.PRODUCTIONDATAID,
T.MAXPRODUCTIONDATAID,
T.CNUM,
L.BUILDINGNO,
P2.PROCEDUREID P2
FROM
(
SELECT
TRUNC( P.CREATETIME ) AS CDATE,
P.GROUTINGLINEID,
P.KILNID,
P.PROCEDUREID,
P.GOODSLEVELTYPEID,
P.PRODUCTIONDATAID,
MAX( PMAX.PRODUCTIONDATAID ) MAXPRODUCTIONDATAID,
1 AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = P.GROUTINGDAILYDETAILID
AND PMAX.PRODUCTIONDATAID < P.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1'
/*20 研磨 22 直接冷补 23 研磨后冷补(非回收) 37 堵漏气 41 刷洗不良*/
AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID IN ( 13, 35 ) AND P.CHECKBATCHNO = 1
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
P.CREATETIME,
P.GROUTINGLINEID,
P.KILNID,
P.PROCEDUREID,
P.GOODSLEVELTYPEID,
P.PRODUCTIONDATAID
union all
SELECT
TRUNC( P.CREATETIME ) AS CDATE,
P.GROUTINGLINEID,
P.KILNID,
P.PROCEDUREID,
0 GOODSLEVELTYPEID,
P.PRODUCTIONDATAID,
-1 MAXPRODUCTIONDATAID,
1 AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
WHERE P.PROCEDUREID IN ( 13, 35 ) AND P.CHECKFLAG = 1
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
) T
LEFT JOIN TP_PC_GROUTINGLINE L ON T.GROUTINGLINEID = L.GROUTINGLINEID
LEFT JOIN TP_PM_PRODUCTIONDATA P2 ON T.MAXPRODUCTIONDATAID > 0 AND ( P2.PRODUCTIONDATAID = T.MAXPRODUCTIONDATAID AND P2.PROCEDUREID IN ( 22, 23, 37, 20 ) )
) C
GROUP BY
GROUPING SETS ( ( C.CDATE, C.BUILDINGNO ), ( ) )
)A
)DD WHERE DD.楼号<>'--'
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export009产品质量统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export009产品质量统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export009产品质量统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export010()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export010 各工序缺陷统计表结转开始!");
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete JZ_RPT010 WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
//dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
dayEnd = dayBegin.AddMonths(1);
String sqlStr1 = @"
INSERT INTO JZ_RPT010 SELECT * FROM (SELECT
KNUM.日期 AS 日期,
KNUM.出窑量,
'0' AS K_BUILDINGNO,
'0' AS K_KILNID,
to_number( to_char( @YEAR@ ) || lpad( to_char( @I@ ), 2, '0' ) ),
DEFECT.*
FROM
(
SELECT
*
FROM
(
SELECT
DECODE( GID, 7, '合计', 6, '合计', 5, '合计', CDATE ) AS 缺陷日期,
DECODE(
GID,
1,
DEFECTTYPENAME || '_合计',
3,
'合计',
7,
'合计',
6,
DEFECTTYPENAME || '_' || DEFECTNAME,
5,
DEFECTTYPENAME || '_合计',
DEFECT
) AS DEFECT,
CNUM
FROM
(
SELECT
GROUPING_ID ( TRUNC( P.CHECKTIME ), T.DEFECTTYPEID, D.DEFECTID ) AS GID,
TO_CHAR( TRUNC( P.CHECKTIME ), 'YYYY-MM-DD' ) AS CDATE,
L.BUILDINGNO,
P.KILNID,
D.DEFECTID,
M.DEFECTNAME,
T.DEFECTTYPENAME,
T.DEFECTTYPENAME || '_' || M.DEFECTNAME AS DEFECT,
COUNT( * ) AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
LEFT JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
LEFT JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
LEFT JOIN TP_MST_DEFECTTYPE T ON T.DEFECTTYPEID = M.DEFECTTYPEID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13
AND P.CHECKBATCHNO = 1
AND P.GOODSLEVELTYPEID <> 4
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME < @DATEEND@
GROUP BY
GROUPING SETS (
(
TRUNC( P.CHECKTIME ),
L.BUILDINGNO,
P.KILNID,
T.DEFECTTYPEID,
D.DEFECTID,
M.DEFECTNAME,
T.DEFECTTYPENAME
),
( TRUNC( P.CHECKTIME ), T.DEFECTTYPEID, T.DEFECTTYPENAME ),
( TRUNC( P.CHECKTIME ) ),
( D.DEFECTID, T.DEFECTTYPENAME, M.DEFECTNAME ),
( T.DEFECTTYPEID, T.DEFECTTYPENAME ),
( )
)
ORDER BY
CDATE,
T.DEFECTTYPEID,
D.DEFECTID
)
) PIVOT ( SUM( CNUM ) FOR DEFECT IN ( '成型缺陷_糙活',
'成型缺陷_成裂',
'成型缺陷_成脏',
'成型缺陷_成走',
'成型缺陷_孔不良',
'成型缺陷_泥绺',
'成型缺陷_坯脏',
'成型缺陷_注泡',
'成型缺陷_棕眼',
'成型缺陷_漏气',
'成型缺陷_卡球',
'成型缺陷_炸圈',
'成型缺陷_排水不良',
'成型缺陷_合计',
'施釉缺陷_爆釉',
'施釉缺陷_脱釉',
'施釉缺陷_釉磕',
'施釉缺陷_标不良',
'施釉缺陷_釉薄',
'施釉缺陷_釉绺',
'施釉缺陷_釉脏',
'施釉缺陷_釉粘',
'施釉缺陷_波纹',
'施釉缺陷_釉泡',
'施釉缺陷_氯化镁',
'施釉缺陷_灌釉不良',
'施釉缺陷_合计',
'出装缺陷_蹭釉',
'出装缺陷_落脏',
'出装缺陷_装磕',
'出装缺陷_装脏',
'出装缺陷_装粘',
'出装缺陷_装走',
'出装缺陷_合计',
'烧窑缺陷_桔釉',
'烧窑缺陷_烧裂',
'烧窑缺陷_烧生',
'烧窑缺陷_烧炸',
'烧窑缺陷_桔柚',
'烧窑缺陷_过火泡',
'烧窑缺陷_针孔',
'烧窑缺陷_麻坑',
'烧窑缺陷_窑脏',
'烧窑缺陷_烟熏',
'烧窑缺陷_风惊',
'烧窑缺陷_水滴',
'烧窑缺陷_合计',
'原料缺陷_铁脏',
'原料缺陷_铜脏',
'原料缺陷_合计',
'其他缺陷_冷补',
'其他缺陷_坯磕',
'其他缺陷_研磨',
'其他缺陷_崩脏',
'其他缺陷_漏气合格',
'其他缺陷_复烧修补不良',
'其他缺陷_B级品',
'其他缺陷_实验',
'其他缺陷_合计',
'出窑缺陷_划釉',
'出窑缺陷_出磕',
'出窑缺陷_合计',
'窑缺陷_合计',
'点釉缺陷_点釉',
'点釉缺陷_合计',
'冷补缺陷_补不良',
'冷补缺陷_磕划',
'冷补缺陷_漏气',
'冷补缺陷_成检漏验',
'冷补缺陷_研磨不良',
'冷补缺陷_合计',
'研磨缺陷_眼',
'研磨缺陷_底',
'研磨缺陷_底和面',
'研磨缺陷_磕划',
'研磨缺陷_研磨不良',
'研磨缺陷_成检漏验',
'研磨缺陷_面',
'研磨缺陷_边',
'研磨缺陷_研磨配盖',
'研磨缺陷_合计'
, '合计' AS 合计 ) )
) DEFECT
RIGHT JOIN (
SELECT
DECODE( GROUPING_ID ( TRUNC( P.CHECKTIME ) ), 1, '合计', TO_CHAR( TRUNC( P.CHECKTIME ), 'YYYY-MM-DD' ) ) AS 日期,
COUNT( * ) AS 出窑量
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13
AND P.CHECKBATCHNO = 1
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME < @DATEEND@
GROUP BY
GROUPING SETS ( ( TRUNC( P.CHECKTIME ) ), ( ) )
) KNUM ON DEFECT.缺陷日期 = KNUM.日期
)DD WHERE DD.日期<> '合计'";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export010各工序缺陷统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export010各工序缺陷统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export010各工序缺陷统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export011()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export011 成型半月品月报结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string sqlStr = @"delete AJZ_RPT011 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
string sqlStr1 = @"
INSERT INTO AJZ_RPT011
SELECT
组别,
成型工号,
物料名称,
成型,
成型线号,
接收数量,
实收数量,
返修数量,
'0' AS BUILDINGNO,
to_number( to_char( @YEAR@ ) || lpad( to_char( @I@ ), 2, '0' ) ),
'0' AS MONITORCODE,
'0' AS GOODSCODE
FROM
(
SELECT
DECODE( GROUPING_ID ( T.MONITORCODE, T.GOODSCODE ), 1, '合计', 3, '合计', T.MONITORNAME ) AS 组别,
DECODE( GROUPING_ID ( T.MONITORCODE, T.GOODSCODE ), 1, '--', 3, '--', T.USERCODE ) AS 成型工号,
DECODE( GROUPING_ID ( T.MONITORCODE, T.GOODSCODE ), 1, '--', 3, '--', T.GOODSNAME ) AS 物料名称,
DECODE( GROUPING_ID ( T.MONITORCODE, T.GOODSCODE ), 1, '--', 3, '--', T.USERNAME ) AS 成型,
DECODE( GROUPING_ID ( T.MONITORCODE, T.GOODSCODE ), 1, '--', 3, '--', T.GROUTINGLINENO ) AS 成型线号,
SUM( CASE WHEN T.PROCEDUREID IN ( 25, 2 ) AND T.VALUEFLAG = '1' THEN T.CNUM ELSE 0 END ) AS 接收数量,
SUM( CASE WHEN T.PROCEDUREID IN ( 26, 3 ) AND T.VALUEFLAG = '1' THEN T.CNUM ELSE 0 END ) AS 实收数量,
SUM( CASE WHEN T.VALUEFLAG = '0' THEN T.CNUM ELSE 0 END ) AS 返修数量
FROM
(
SELECT
MU.USERCODE AS MONITORCODE,
MU.USERNAME AS MONITORNAME,
U.USERCODE,
P.VALUEFLAG,
P.GOODSCODE,
P.GOODSNAME,
U.USERNAME,
L.GROUTINGLINENO,
P.PROCEDUREID,
count( * ) AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
LEFT JOIN TP_PC_GROUTINGLINE L ON L.GROUTINGLINEID = G.GROUTINGLINEID --LEFT JOIN TP_MST_USER MU ON MU.USERCODE = G.MONITORCODE
LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID
LEFT JOIN TP_MST_USER U ON U.USERID = G.USERID
WHERE
(
( P.VALUEFLAG = '1' AND P.CREATETIME >= @DATEBEGIN@ AND P.CREATETIME <= @DATEEND@)
OR ( P.VALUEFLAG = '0' AND P.BACKOUTTIME >= @DATEBEGIN@ AND P.BACKOUTTIME <= @DATEEND@)
)
-- AND ( L.BUILDINGNO = @BUILDINGNO @OR @BUILDINGNO @IS NULL )
AND P.PROCEDUREID IN ( 25, 26, 2, 3 ) -- 一期还是二期
-- AND ( P.GOODSCODE = @GOODSCODE @OR @GOODSCODE @IS NULL )
-- AND ( U.USERCODE = @USERCODE @OR @USERCODE @IS NULL )
-- AND ( MU.USERNAME = @USERNAME @OR @USERNAME @IS NULL )
GROUP BY
MU.USERCODE,
MU.USERNAME,
U.USERCODE,
U.USERNAME,
P.VALUEFLAG,
P.PROCEDUREID,
P.GOODSCODE,
P.GOODSNAME,
L.GROUTINGLINENO
ORDER BY
G.MONITORCODE,
G.USERCODE
) T
GROUP BY
GROUPING SETS (
(
T.MONITORCODE,
T.MONITORNAME,
T.USERNAME,
T.USERCODE,
T.USERNAME,
T.GOODSCODE,
T.GOODSNAME,
T.GROUTINGLINENO
),
( T.MONITORCODE ),
( )
)
)
WHERE 组别 <> '合计'
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export011成型半月品月报结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export011成型半月品月报结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export011成型半月品月报结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export012()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export012 成型缺陷统计表结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
//DateTime dayBegin = new DateTime();
//DateTime dayEnd = new DateTime();
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string sqlStr = @"delete AJZ_RPT012 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
//dayBegin =Convert.ToDateTime( b + "-" + i.ToString().PadLeft(2, '0') + "-01");
//dayEnd =Convert.ToDateTime( b + "-" + (i + 1).ToString().PadLeft(2, '0') + "-01");
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
string sql2 = @"
INSERT INTO AJZ_RPT012
SELECT
PC.组别,
PC.工号,
PC.产品型号,
PC.姓名,
PC.出窑数,
PC.出窑数 - NVL( PD.合计, 0 ) AS 合格数,
0 as BUILDINGNO,
2 as PROCEDUREID,
TO_CHAR(
ROUND(
( PC.出窑数 - NVL( PD.合计, 0 ) ) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ),
4
) * 100
) || '%' AS 合格率,
TO_CHAR(
100 - ROUND(
( PC.出窑数 - NVL( PD.合计, 0 ) ) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ),
4
) * 100
) || '%' AS 缺陷率,
PD.组别,
PD.MONITORCODE,
PD.工号,
PD.姓名,
PD.产品型号,
'0' as NO,
2 as PRO,
PD.糙活,
PD.成裂,
PD.成脏,
PD.成走,
PD.孔不良,
PD.泥绺,
PD.坯脏,
PD.注泡,
PD.棕眼,
PD.漏气,
PD.卡球,
PD.炸圈,
PD.排水不良,
PD.合计,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
*
FROM
(
SELECT
--GID,
DECODE( GID, 6, MONITORNAME || '[合计]', 7, MONITORNAME || '[合计]',14,'合计',15,'合计', MONITORNAME ) AS 组别,
DECODE( GID, 6, MONITORCODE || '[合计]', 7, MONITORCODE || '[合计]',14,'ZZZ',15,'ZZZ', MONITORCODE ) AS MONITORCODE,
USERCODE AS 工号,
USERNAME AS 姓名,
GOODSMODEL AS 产品型号,
DECODE( GID, 1, '合计', 7, '合计',15,'合计', DEFECT ) AS DEFECT,
CNUM
FROM
(
SELECT
GROUPING_ID ( MU.USERCODE, U.USERCODE, GS.GOODSMODEL, D.DEFECTID ) AS GID,
NVL( MU.USERCODE, ' ' ) AS MONITORCODE,
NVL( MU.USERNAME, '无' ) AS MONITORNAME,
U.USERCODE,
U.USERNAME,
GS.GOODSMODEL,
D.DEFECTID,
M.DEFECTNAME AS DEFECT,
--COUNT( * ) AS CNUM
SUM(CASE WHEN D.DEFECTID = 11 AND (P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5) THEN 0 ELSE 1 END) AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID
INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
LEFT JOIN TP_MST_DEFECTTYPE T ON T.DEFECTTYPEID = M.DEFECTTYPEID --LEFT JOIN TP_MST_USER U ON U.USERCODE = G.USERCODE
INNER JOIN TP_MST_USER U ON U.USERID = D.DEFECTUSERID
LEFT JOIN TP_MST_GOODS GS ON GS.GOODSID = P.GOODSID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13 AND P.CHECKBATCHNO = 1
AND P.GOODSLEVELTYPEID <> 4
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
AND P.ISREFIRE = '0'
AND D.DEFECTPROCEDUREID = 2
GROUP BY
GROUPING SETS (
( MU.USERCODE,MU.USERNAME,U.USERCODE,U.USERNAME,GS.GOODSMODEL,D.DEFECTID,M.DEFECTNAME ),
( MU.USERCODE, MU.USERNAME, U.USERCODE, U.USERNAME, GS.GOODSMODEL ),
( MU.USERCODE, MU.USERNAME, D.DEFECTID, M.DEFECTNAME ),
( MU.USERCODE, MU.USERNAME ),
( D.DEFECTID, M.DEFECTNAME ),
()
)
ORDER BY
MONITORCODE,
USERCODE,
GROUPING_ID ( MU.USERCODE, U.USERCODE, GS.GOODSMODEL, D.DEFECTID )
)
) PIVOT (
SUM( CNUM ) FOR DEFECT IN (
'糙活' AS 糙活,
'成裂' AS 成裂,
'成脏' AS 成脏,
'成走' AS 成走,
'孔不良' AS 孔不良,
'泥绺' AS 泥绺,
'坯脏' AS 坯脏,
'注泡' AS 注泡,
'棕眼' AS 棕眼,
'漏气' AS 漏气,
'卡球' AS 卡球,
'炸圈' AS 炸圈,
'排水不良' AS 排水不良,
'合计' AS 合计
)
)
) PD
RIGHT JOIN (
SELECT
GID,
DECODE( GID, 3, T.MONITORCODE || '[合计]',7,'ZZZ', T.MONITORCODE ) AS MONITORCODE,
DECODE( GID, 3, T.组别 || '[合计]',7,'合计', T.组别 ) AS 组别,
T.工号,
T.姓名,
T.产品型号,
T.出窑数
FROM
(
SELECT
GROUPING_ID ( MU.USERCODE, U.USERCODE, GS.GOODSMODEL ) AS GID,
NVL( MU.USERCODE, ' ' ) MONITORCODE,
NVL( MU.USERNAME, '无' ) AS 组别,
U.USERCODE AS 工号,
U.USERNAME AS 姓名,
GS.GOODSMODEL AS 产品型号,
COUNT( * ) AS 出窑数
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID --LEFT JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
LEFT JOIN TP_PM_PRODUCTIONDATA PB ON P.BARCODE = PB.BARCODE
AND PB.MODELTYPE = 5
LEFT JOIN TP_MST_USER U ON U.USERID = PB.USERID
LEFT JOIN TP_MST_GOODS GS ON P.GOODSID = GS.GOODSID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13 AND P.CHECKBATCHNO = 1
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
AND PB.PROCEDUREID = 2
AND P.ISREFIRE = '0'
AND PB.VALUEFLAG='1'
GROUP BY
GROUPING SETS (
( MU.USERCODE, MU.USERNAME, U.USERCODE, U.USERNAME, GS.GOODSMODEL ),
( MU.USERCODE, MU.USERNAME ),
()
)
) T
) PC ON PD.MONITORCODE = PC.MONITORCODE
AND ( PC.GID = 3 OR PC.GID=7 OR ( PD.工号 = PC.工号 AND PD.产品型号 = PC.产品型号 ) )
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sql2, sqlPara.ToArray());
string sql3 = @"
INSERT INTO AJZ_RPT012
SELECT
PC.组别,
PC.工号,
PC.产品型号,
PC.姓名,
PC.出窑数,
PC.出窑数 - NVL( PD.合计, 0 ) AS 合格数,
0 as BUILDINGNO,
25 as PROCEDUREID,
TO_CHAR(
ROUND(
( PC.出窑数 - NVL( PD.合计, 0 ) ) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ),
4
) * 100
) || '%' AS 合格率,
TO_CHAR(
100 - ROUND(
( PC.出窑数 - NVL( PD.合计, 0 ) ) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ),
4
) * 100
) || '%' AS 缺陷率,
PD.组别,
PD.MONITORCODE,
PD.工号,
PD.姓名,
PD.产品型号,
0,
25 as PRO,
PD.糙活,
PD.成裂,
PD.成脏,
PD.成走,
PD.孔不良,
PD.泥绺,
PD.坯脏,
PD.注泡,
PD.棕眼,
PD.漏气,
PD.卡球,
PD.炸圈,
PD.排水不良,
PD.合计,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
*
FROM
(
SELECT
--GID,
DECODE( GID, 6, MONITORNAME || '[合计]', 7, MONITORNAME || '[合计]',14,'合计',15,'合计', MONITORNAME ) AS 组别,
DECODE( GID, 6, MONITORCODE || '[合计]', 7, MONITORCODE || '[合计]',14,'ZZZ',15,'ZZZ', MONITORCODE ) AS MONITORCODE,
USERCODE AS 工号,
USERNAME AS 姓名,
GOODSMODEL AS 产品型号,
DECODE( GID, 1, '合计', 7, '合计',15,'合计', DEFECT ) AS DEFECT,
CNUM
FROM
(
SELECT
GROUPING_ID ( MU.USERCODE, U.USERCODE, GS.GOODSMODEL, D.DEFECTID ) AS GID,
NVL( MU.USERCODE, ' ' ) AS MONITORCODE,
NVL( MU.USERNAME, '无' ) AS MONITORNAME,
U.USERCODE,
U.USERNAME,
GS.GOODSMODEL,
D.DEFECTID,
M.DEFECTNAME AS DEFECT,
--COUNT( * ) AS CNUM
SUM(CASE WHEN D.DEFECTID = 11 AND (P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5) THEN 0 ELSE 1 END) AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID
INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
LEFT JOIN TP_MST_DEFECTTYPE T ON T.DEFECTTYPEID = M.DEFECTTYPEID --LEFT JOIN TP_MST_USER U ON U.USERCODE = G.USERCODE
INNER JOIN TP_MST_USER U ON U.USERID = D.DEFECTUSERID
LEFT JOIN TP_MST_GOODS GS ON GS.GOODSID = P.GOODSID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13 AND P.CHECKBATCHNO = 1
AND P.GOODSLEVELTYPEID <> 4
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
AND P.ISREFIRE = '0'
AND D.DEFECTPROCEDUREID = 25
GROUP BY
GROUPING SETS (
( MU.USERCODE,MU.USERNAME,U.USERCODE,U.USERNAME,GS.GOODSMODEL,D.DEFECTID,M.DEFECTNAME ),
( MU.USERCODE, MU.USERNAME, U.USERCODE, U.USERNAME, GS.GOODSMODEL ),
( MU.USERCODE, MU.USERNAME, D.DEFECTID, M.DEFECTNAME ),
( MU.USERCODE, MU.USERNAME ),
( D.DEFECTID, M.DEFECTNAME ),
()
)
ORDER BY
MONITORCODE,
USERCODE,
GROUPING_ID ( MU.USERCODE, U.USERCODE, GS.GOODSMODEL, D.DEFECTID )
)
) PIVOT (
SUM( CNUM ) FOR DEFECT IN (
'糙活' AS 糙活,
'成裂' AS 成裂,
'成脏' AS 成脏,
'成走' AS 成走,
'孔不良' AS 孔不良,
'泥绺' AS 泥绺,
'坯脏' AS 坯脏,
'注泡' AS 注泡,
'棕眼' AS 棕眼,
'漏气' AS 漏气,
'卡球' AS 卡球,
'炸圈' AS 炸圈,
'排水不良' AS 排水不良,
'合计' AS 合计
)
)
) PD
RIGHT JOIN (
SELECT
GID,
DECODE( GID, 3, T.MONITORCODE || '[合计]',7,'ZZZ', T.MONITORCODE ) AS MONITORCODE,
DECODE( GID, 3, T.组别 || '[合计]',7,'合计', T.组别 ) AS 组别,
T.工号,
T.姓名,
T.产品型号,
T.出窑数
FROM
(
SELECT
GROUPING_ID ( MU.USERCODE, U.USERCODE, GS.GOODSMODEL ) AS GID,
NVL( MU.USERCODE, ' ' ) MONITORCODE,
NVL( MU.USERNAME, '无' ) AS 组别,
U.USERCODE AS 工号,
U.USERNAME AS 姓名,
GS.GOODSMODEL AS 产品型号,
COUNT( * ) AS 出窑数
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID --LEFT JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
LEFT JOIN TP_PM_PRODUCTIONDATA PB ON P.BARCODE = PB.BARCODE
AND PB.MODELTYPE = 5
LEFT JOIN TP_MST_USER U ON U.USERID = PB.USERID
LEFT JOIN TP_MST_GOODS GS ON P.GOODSID = GS.GOODSID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13 AND P.CHECKBATCHNO = 1
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
AND PB.PROCEDUREID = 25
AND P.ISREFIRE = '0'
AND PB.VALUEFLAG='1'
GROUP BY
GROUPING SETS (
( MU.USERCODE, MU.USERNAME, U.USERCODE, U.USERNAME, GS.GOODSMODEL ),
( MU.USERCODE, MU.USERNAME ),
()
)
) T
) PC ON PD.MONITORCODE = PC.MONITORCODE
AND ( PC.GID = 3 OR PC.GID=7 OR ( PD.工号 = PC.工号 AND PD.产品型号 = PC.产品型号 ) )
";
List sqlPara2 = new List();
sqlPara2.Add(new CDAParameter("I", i));
sqlPara2.Add(new CDAParameter("YEAR", b));
sqlPara2.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara2.Add(new CDAParameter("DATEBEGIN", dayBegin));
result += conn.ExecuteNonQuery(sql3, sqlPara2.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export012成型缺陷统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export012成型缺陷统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export012成型缺陷统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export013()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export013 其他缺陷统计表结转开始!");
conn.Open();
conn.BeginTransaction();
//string t = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
//string z = DateTime.Now.AddMonths(-1).Year.ToString();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(a + b);
String sqlStr = @"delete JZ_RPT013_22 where FORWARDTIME = @C@";
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
//string dayBegin = null;
//string dayEnd = null;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
int[] procedUserIDs = { 3, 4, 5, 6, 7, 8, 9, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42 };
for (int i = m; i <= m; i++)
{
//dayBegin = z+"-" + i.ToString().PadLeft(2, '0') + "-01";
//dayEnd = z+"-" + i.ToString().PadLeft(2, '0') + "-"+Convert.ToDateTime( dayBegin).AddMonths(1).AddDay(-1).Day;
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
for (int p = 0; p < procedUserIDs.Length; p++)
{
for (int j = 0; j <= 2; j++)
{
String str = j + "#";
String sqlStr1 = @"
INSERT INTO JZ_RPT013_22
SELECT
*
FROM
(
SELECT
PC.工号,
PC.姓名,
NVL( PC.产品型号, PD.产品型号复 ) AS 产品型号,
PC.出窑数,
PC.出窑数 - NVL( PD.合计, 0 ) AS 合格数,
--ROUND( (PC.出窑数 - NVL( PD.合计, 0 )) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ), 4 ) * 100 AS 合格率,
TO_CHAR(
100 - ROUND(
( PC.出窑数 - NVL( PD.合计, 0 ) ) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ),
4
) * 100
) || '%' AS 缺陷率,
to_number(@YEAR@ || lpad(to_char(@I@),2,'0')),
@BUILDINGNO@,
@PROCEDUREID@,
PD.*
FROM
(
SELECT
*
FROM
(
SELECT--GID,
DECODE( GID, 6, USERCODE || '合计', 7, USERCODE || '合计', USERCODE ) AS 工号复,
USERNAME AS 姓名复,
GOODSMODEL AS 产品型号复,
DECODE( GID, 1, '合计', 3, '合计', 7, '合计', DEFECT ) AS DEFECT,
CNUM
FROM
(
SELECT
GROUPING_ID ( U.USERCODE, GS.GOODSMODEL, D.DEFECTID ) AS GID,
U.USERCODE,
U.USERNAME,
GS.GOODSMODEL,
D.DEFECTID,
M.DEFECTNAME AS DEFECT,
COUNT( * ) AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID --LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID
INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
LEFT JOIN TP_MST_DEFECTTYPE T ON T.DEFECTTYPEID = M.DEFECTTYPEID
INNER JOIN TP_MST_USER U ON U.USERID = D.DEFECTUSERID
LEFT JOIN TP_MST_GOODS GS ON GS.GOODSID = P.GOODSID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = @CHECKPROCEDUREID@
AND P.CHECKBATCHNO = 1
AND P.GOODSLEVELTYPEID <> 4
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
--AND P.CHECKTIME >= to_date(@DATEBEGIN@,'yyyy-mm-dd')
--AND P.CHECKTIME <= to_date(@DATEEND@,'yyyy-mm-dd')
AND P.ISREFIRE = @ISREFIRE@
AND ( L.BUILDINGNO = @BUILDINGNO@ OR @BUILDINGNO@ IS NULL )
AND ( D.DEFECTPROCEDUREID = @PROCEDUREID@ OR @PROCEDUREID@ IS NULL )
AND ( GS.GOODSMODEL = '' OR '' IS NULL )
AND ( U.USERCODE = '' OR '' IS NULL )
GROUP BY
GROUPING SETS (
( U.USERCODE, U.USERNAME, GS.GOODSMODEL, D.DEFECTID, M.DEFECTNAME ),
( U.USERCODE, U.USERNAME, GS.GOODSMODEL ),
( U.USERCODE, U.USERNAME, D.DEFECTID, M.DEFECTNAME ),
( U.USERCODE, U.USERNAME ),
( D.DEFECTID, M.DEFECTNAME ),
( )
)
)
) PIVOT (
SUM( CNUM ) FOR DEFECT IN ('桔釉' AS 桔釉,
'划釉' AS 划釉,
'出磕' AS 出磕,
'烧裂' AS 烧裂,
'烧生' AS 烧生,
'冷补' AS 冷补,
'烧炸' AS 烧炸,
'眼' AS 眼,
'桔柚' AS 桔柚,
'底' AS 底,
'过火泡' AS 过火泡,
'底和面' AS 底和面,
'点釉' AS 点釉,
'针孔' AS 针孔,
'补不良' AS 补不良,
'麻坑' AS 麻坑,
'窑脏' AS 窑脏,
'磕划' AS 磕划,
'烟熏' AS 烟熏,
'漏气' AS 漏气,
'成检漏验' AS 成检漏验,
'风惊' AS 风惊,
'铁脏' AS 铁脏,
'研磨不良' AS 研磨不良1,
'铜脏' AS 铜脏,
'磕划' AS 磕划1,
'坯磕' AS 坯磕,
'研磨不良' AS 研磨不良,
'研磨' AS 研磨,
'成检漏验' AS 成检漏验1,
'崩脏' AS 崩脏,
'水滴' AS 水滴,
'复烧修补不良' AS 复烧修补不良,
'B级品' AS B级品,
'面' AS 面,
'边' AS 边,
'研磨配盖' AS 研磨配盖,
'糙活' AS 糙活,
'成裂' AS 成裂,
'成脏' AS 成脏,
'成走' AS 成走,
'孔不良' AS 孔不良,
'泥绺' AS 泥绺,
'坯脏' AS 坯脏,
'注泡' AS 注泡,
'棕眼' AS 棕眼,
'漏气' AS 漏气1,
'卡球' AS 卡球,
'炸圈' AS 炸圈,
'排水不良' AS 排水不良,
'爆釉' AS 爆釉,
'标不良' AS 标不良,
'脱釉' AS 脱釉,
'釉薄' AS 釉薄,
'釉磕' AS 釉磕,
'釉绺' AS 釉绺,
'釉脏' AS 釉脏,
'釉粘' AS 釉粘,
'波纹' AS 波纹,
'釉泡' AS 釉泡,
'氯化镁' AS 氯化镁,
'灌釉不良' AS 灌釉不良,
'蹭釉' AS 蹭釉,
'落脏' AS 落脏,
'装磕' AS 装磕,
'装脏' AS 装脏,
'装粘' AS 装粘,
'装走' AS 装走, '合计' AS 合计 )
)
) PD
RIGHT JOIN (
SELECT
GID,
DECODE( GID, 3, '合计',工号 ) AS 工号,
T.姓名,
T.产品型号,
T.出窑数
FROM
(
SELECT
GROUPING_ID ( U.USERCODE, GS.GOODSMODEL ) AS GID,
U.USERCODE AS 工号,
U.USERNAME AS 姓名,
GS.GOODSMODEL AS 产品型号,
COUNT( * ) AS 出窑数
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID --LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID
INNER JOIN TP_PM_PRODUCTIONDATA PB ON P.BARCODE = PB.BARCODE
INNER JOIN TP_MST_USER U ON U.USERID = PB.USERID
LEFT JOIN TP_MST_GOODS GS ON GS.GOODSID = P.GOODSID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = @CHECKPROCEDUREID@
AND P.CHECKBATCHNO = 1
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
--AND P.CHECKTIME >= to_date(@DATEBEGIN@,'yyyy-mm-dd')
--AND P.CHECKTIME <= to_date(@DATEEND@,'yyyy-mm-dd')
AND ( L.BUILDINGNO = @BUILDINGNO@ OR @BUILDINGNO@ IS NULL )
AND ( @PROCEDUREID@ IS NULL OR PB.PROCEDUREID = @PROCEDUREID@ )
AND PB.VALUEFLAG = '1'
AND ( GS.GOODSMODEL = '' OR '' IS NULL )
AND ( U.USERCODE = '' OR '' IS NULL )
GROUP BY
GROUPING SETS ( ( U.USERCODE, U.USERNAME, GS.GOODSMODEL ), ( U.USERCODE, U.USERNAME ), ( ) )
) T
) PC ON ( ( PC.GID = 3 OR PC.GID = 1 ) AND PD.工号复 = PC.工号 AND PD.产品型号复 IS NULL )
OR ( PD.工号复 = PC.工号 AND PD.产品型号复 = PC.产品型号 )
)
WHERE
产品型号 IS NOT NULL
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
sqlPara.Add(new CDAParameter("BUILDINGNO", str));
sqlPara.Add(new CDAParameter("PROCEDUREID", procedUserIDs[p]));
sqlPara.Add(new CDAParameter("CHECKPROCEDUREID", (procedUserIDs[p] == 19 || procedUserIDs[p] == 36) ? 35 : 13));
sqlPara.Add(new CDAParameter("ISREFIRE", (procedUserIDs[p] == 19 || procedUserIDs[p] == 36) ? 6 : 0));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
}
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export013其他缺陷统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export013其他缺陷统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export013其他缺陷统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export014()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export014 每窑质量总缺陷统计表结转开始!");
conn.Open();
conn.BeginTransaction();
string t = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string z = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(z + t);
//2021-07-12 dongyan 修正什么问题
String sqlStr = @"delete JZ_RPT014 WHERE FORWARDTIME = @C@";
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
String[] arr = { "13", "35" };
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(z + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddDays(-1);
//for (int a = 0; a < arr.Length; a++)
//{
// String s = arr[a];
// for (int j = 0; j <= 2; j++)
// {
// String str = j + "#";
// for (int b = 0; b <= 4; b++)
// {
// String br = b.ToString();
String sqlStr1 = @" INSERT INTO JZ_RPT014
SELECT
to_number(@YEAR@ || lpad(to_char(@I@),2,'0')),
GOODSTYPENAME,
GOODSNAME,
OUT_K,
COUNT_U4,
COUNT_AB,
COUNT_AA,
COUNT_B,
COUNT_R,
LB_NUM,
COUNT_L,
COUNT_U7,
COUNT_Z,
D_GID,
D_GOODSTYPECODE,
D_GOODSCODE,
CNUM1,
CNUM2,
CNUM3,
CNUM4,
CNUM5,
CNUM6,
CNUM7,
CNUM8,
CNUM9,
CNUM10,
CNUM11,
CNUM12,
CNUM13,
CNUM14,
CNUM15,
CNUM16,
CNUM17,
CNUM18,
CNUM19,
CNUM20,
CNUM21,
CNUM22,
CNUM23,
CNUM24,
CNUM25,
CNUM26,
CNUM27,
CNUM28,
CNUM29,
CNUM30,
CNUM31,
CNUM32,
CNUM33,
CNUM34,
CNUM35,
CNUM36,
CNUM37,
CNUM38,
CNUM39,
CNUM40,
CNUM41,
CNUM42,
CNUM43,
CNUM44,
CNUM45,
CNUM46,
CNUM47,
CNUM48,
CNUM49,
CNUM50,
CNUM51,
CNUM52,
CNUM53,
CNUM54,
CNUM55,
CNUM56,
CNUM57,
CNUM58,
CNUM59,
CNUM60,
CNUM61,
CNUM62,
CNUM63,
CNUM64,
CNUM65,
CNUM66,
CNUM67,
CNUM68,
CNUM69,
CNUM70,
CNUM71,
CNUM72,
CNUM73,
-- decode(BUILDINGNO,NULL,@BUILDINGNO@,BUILDINGNO) AS BUILDINGNO,
'0' AS BUILDINGNO,
-- decode(PROCEDUREID,NULL,@PROCEDUREID@,PROCEDUREID) AS PROCEDUREID,
'0' AS PROCEDUREID,
GOOD,
'0' KILNID,
COUNT_UA
FROM
(
SELECT
DECODE( TA.GID, 3, '合计', TA.GOODSTYPENAME ) AS GOODSTYPENAME,
TA.GOODSNAME AS GOODSNAME,
TA.BUILDINGNO AS BUILDINGNO,
TA.PROCEDUREID AS PROCEDUREID,
DECODE( TA.OUT_K, 0, NULL, TA.OUT_K ) AS OUT_K,
DECODE( TA.COUNT_U4, 0, NULL, TA.COUNT_U4 ) AS COUNT_U4,
DECODE( TA.COUNT_U5 + TA.COUNT_AB, 0, NULL, TA.COUNT_U5 + TA.COUNT_AB ) COUNT_AB,
DECODE( TA.COUNT_AA, 0, NULL, TA.COUNT_AA ) AS COUNT_AA,
DECODE( TA.COUNT_B, 0, NULL, TA.COUNT_B ) AS COUNT_B,
DECODE( TA.COUNT_R, 0, NULL, TA.COUNT_R ) AS COUNT_R,
DECODE( TA.LB_NUM, 0, NULL, TA.LB_NUM ) AS LB_NUM,
DECODE( TA.COUNT_L, 0, NULL, TA.COUNT_L ) AS COUNT_L,
DECODE(
TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F,
0,
NULL,
TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F
) AS COUNT_U7,
DECODE( TA.COUNT_Z, 0, NULL, TA.COUNT_Z ) AS COUNT_Z,
CASE
WHEN TA.OUT_K IS NULL
OR TA.OUT_K = 0 THEN
NULL ELSE ROUND( ( TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB + TA.COUNT_AA ) / TA.OUT_K, 4 ) * 100
END AS COUNT_UA,
TD.* ,DECODE (GOODSTYPENAME,'妇洗','1','座','2','挂座','3','柱','4','盆','5','箱','6','连体','7' ,'8') AS GOOD
FROM
(
SELECT
GROUPING_ID ( GT.GOODSTYPECODE, G.GOODSCODE ) GID,
GT.GOODSTYPECODE,
GT.GOODSTYPENAME,
G.GOODSCODE,
G.GOODSNAME,
SUM(LB_NUM) LB_NUM,
T.BUILDINGNO,
T.PROCEDUREID,
SUM( T.OUT_K ) OUT_K,
SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 4 THEN 1 ELSE 0 END ) COUNT_U4,
SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 5 THEN 1 ELSE 0 END ) COUNT_U5,
SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 7 THEN 1 ELSE 0 END ) COUNT_U7,
SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 19 THEN 1 ELSE 0 END ) AS COUNT_R,
SUM( CASE WHEN T.H_FLAG = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 36 THEN 1 ELSE 0 END ) AS COUNT_Z,
SUM( T.B_NUM ) AS COUNT_B,
SUM( CASE WHEN T.H_FLAG = 1 THEN 1 ELSE 0 END ) AS COUNT_H,
SUM( CASE WHEN RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN - 1 ELSE 0 END ) COUNT_L,
SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23 ) THEN 1 ELSE 0 END ) COUNT_AA,
SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_AB,
SUM( CASE WHEN T.GOODSLEVELTYPEID NOT IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_F
FROM
(
SELECT
PD.PRODUCTIONDATAID,
NULL MPDID,
0 GOODSLEVELTYPEID,
PD.GOODSID,
0 REWORKPROCEDUREID,
DECODE(DL.PRODUCTIONDATAID,null,0,1) LB_NUM,
0 B_NUM,
1 OUT_K,
-1 H_FLAG,
PD.PROCEDUREID,
GL.BUILDINGNO
FROM
TP_PM_PRODUCTIONDATA PD
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
LEFT JOIN TP_PM_DEFECT DL ON DL.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
AND DL.DEFECTID = 67
AND DL.VALUEFLAG = '1'
WHERE
-- (PD.PROCEDUREID = @PROCEDUREID@)
-- AND
PD.CHECKFLAG = 1
AND PD.CREATETIME >=@DATEBEGIN@
AND PD.CREATETIME <= @DATEEND@
-- AND (PD.KILNID =@KILNID@ OR @KILNID@ IS NULL)
AND (INSTR((NULL),PD.GOODSCODE)>0 OR NULL IS NULL)
-- AND (GL.BUILDINGNO = @BUILDINGNO@ )
UNION ALL
SELECT
PD.PRODUCTIONDATAID,
MAX( PMAX.PRODUCTIONDATAID ) MPDID,
PD.GOODSLEVELTYPEID,
PD.GOODSID,
PD.REWORKPROCEDUREID,
0 LB_NUM,
CASE WHEN PD.GOODSLEVELTYPEID = 7 AND sum( D.PRODUCTIONDEFECTID ) > 0 THEN 1 ELSE 0 END B_NUM,
0 OUT_K,
CASE WHEN sum( PMAX.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_FLAG,
PD.PROCEDUREID,
GL.BUILDINGNO
FROM
TP_PM_PRODUCTIONDATA PD
LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
AND PMAX.PRODUCTIONDATAID < PD.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1' AND PMAX.PROCEDUREMODEL = '1'
AND PMAX.PROCEDUREID IN (20, 22, 23, 37, 41)
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
AND D.DEFECTID = 92
AND D.VALUEFLAG = '1'
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
WHERE
PD.VALUEFLAG = '1'
-- AND (PD.PROCEDUREID = @PROCEDUREID@ )
AND PD.CHECKBATCHNO = 1
AND PD.CREATETIME >= @DATEBEGIN@
AND PD.CREATETIME <= @DATEEND@
-- AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
AND (INSTR((NULL),PD.GOODSCODE)>0 OR NULL IS NULL)
-- AND (GL.BUILDINGNO = @BUILDINGNO@ )
GROUP BY
PD.PRODUCTIONDATAID,
PD.GOODSLEVELTYPEID,
PD.GOODSID,
PD.REWORKPROCEDUREID,
PD.PROCEDUREID,
GL.BUILDINGNO
) T
LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID
INNER JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
GROUP BY
GROUPING SETS ( ( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, G.GOODSNAME,T.BUILDINGNO,T.PROCEDUREID ), ( GT.GOODSTYPECODE, GT.GOODSTYPENAME ), ( ) )
) TA
LEFT JOIN (
SELECT
*
FROM
(
SELECT
CASE WHEN TT.GID IN ( 12, 13, 15 ) THEN 3 WHEN TT.GID IN ( 4, 5, 7 ) THEN 1 ELSE 0 END AS D_GID,
TT.GOODSTYPECODE D_GOODSTYPECODE,
TT.GOODSCODE D_GOODSCODE,
CASE WHEN TT.GID IN ( 1, 5, 13 ) THEN TT.DEFECT || '合计' WHEN TT.GID IN ( 3, 7, 15 ) THEN '合计' ELSE TT.DEFECT END AS DEFECT,
TT.CNUM
FROM
(
SELECT
GROUPING_ID ( GT.GOODSTYPECODE, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ) AS GID,
GT.GOODSTYPECODE,
GT.GOODSTYPENAME,
G.GOODSCODE,
PDP.DEFECTGROUPNAME,
TO_CHAR( PDP.DEFECTGROUPNAME || '_' || M.DEFECTNAME ) AS DEFECT,
SUM(CASE WHEN D.DEFECTID = 11 AND (P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5) THEN 0 ELSE 1 END) AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_MST_GOODS G ON G.GOODSID = P.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
LEFT JOIN TP_PC_PROCEDURE PR ON PR.PROCEDUREID = D.DEFECTPROCEDUREID
INNER JOIN TP_MST_DEFECTGROUP PDP ON PDP.DEFECTID = D.DEFECTID AND PDP.DEFECTGROUPTYPE LIKE '每窑%'
AND (
( PDP.PROCEDUREID1 = PR.PROCEDUREID OR PDP.PROCEDUREID2 = PR.PROCEDUREID )
OR '' = 35
)
WHERE
P.VALUEFLAG = '1'
-- AND (P.PROCEDUREID = @PROCEDUREID@ )
AND P.CHECKBATCHNO = 1
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
AND P.GOODSLEVELTYPEID <> 4
-- AND (P.KILNID =@KILNID@ OR @KILNID@ IS NULL)
AND (INSTR((NULL),P.GOODSCODE)>0 OR NULL IS NULL)
-- AND (L.BUILDINGNO = @BUILDINGNO@ )
GROUP BY
GROUPING SETS (
( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME ),
( GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE ),
( GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
( GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME ),
( GT.GOODSTYPECODE, GT.GOODSTYPENAME ),
( PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
( PDP.DEFECTGROUPNAME ),
( )
)
) TT
) PIVOT (
SUM( CNUM ) FOR DEFECT IN ('原料缺陷_铁脏' AS CNUM1,
'原料缺陷_铜脏' AS CNUM2,
'原料缺陷_合计' AS CNUM3,
'成型缺陷_糙活' AS CNUM4,
'成型缺陷_成裂' AS CNUM5,
'成型缺陷_成脏' AS CNUM6,
'成型缺陷_成走' AS CNUM7,
'成型缺陷_孔不良' AS CNUM8,
'成型缺陷_漏气' AS CNUM9,
'成型缺陷_泥绺' AS CNUM10,
'成型缺陷_排水不良' AS CNUM11,
'成型缺陷_坯脏' AS CNUM12,
'成型缺陷_注泡' AS CNUM13,
'成型缺陷_棕眼' AS CNUM14,
'成型缺陷_炸圈' AS CNUM15,
'成型缺陷_卡球' AS CNUM16,
'成型缺陷_合计' AS CNUM17,
'施釉缺陷_爆釉' AS CNUM18,
'施釉缺陷_标不良' AS CNUM19,
'施釉缺陷_脱釉' AS CNUM20,
'施釉缺陷_釉薄' AS CNUM21,
'施釉缺陷_釉磕' AS CNUM22,
'施釉缺陷_釉绺' AS CNUM23,
'施釉缺陷_釉脏' AS CNUM24,
'施釉缺陷_釉粘' AS CNUM25,
'施釉缺陷_釉泡' AS CNUM26,
'施釉缺陷_波纹' AS CNUM27,
'施釉缺陷_合计' AS CNUM28,
'循环线施釉缺陷_爆釉' AS CNUM29,
'循环线施釉缺陷_标不良' AS CNUM30,
'循环线施釉缺陷_脱釉' AS CNUM31,
'循环线施釉缺陷_釉薄' AS CNUM32,
'循环线施釉缺陷_釉磕' AS CNUM33,
'循环线施釉缺陷_釉绺' AS CNUM34,
'循环线施釉缺陷_釉脏' AS CNUM35,
'循环线施釉缺陷_釉粘' AS CNUM36,
'循环线施釉缺陷_釉泡' AS CNUM37,
'循环线施釉缺陷_波纹' AS CNUM38,
'循环线施釉缺陷_合计' AS CNUM39,
'出装窑缺陷_蹭釉' AS CNUM40,
'出装窑缺陷_出磕' AS CNUM41,
'出装窑缺陷_划釉' AS CNUM42,
'出装窑缺陷_落脏' AS CNUM43,
'出装窑缺陷_装磕' AS CNUM44,
'出装窑缺陷_装粘' AS CNUM45,
'出装窑缺陷_装脏' AS CNUM46,
'出装窑缺陷_装走' AS CNUM47,
'出装窑缺陷_合计' AS CNUM48,
'烧窑缺陷_过火泡' AS CNUM49,
'烧窑缺陷_桔釉' AS CNUM50,
'烧窑缺陷_麻坑' AS CNUM51,
'烧窑缺陷_烧裂' AS CNUM52,
'烧窑缺陷_烧生' AS CNUM53,
'烧窑缺陷_窑脏' AS CNUM54,
'烧窑缺陷_烧炸' AS CNUM55,
'烧窑缺陷_烟熏' AS CNUM56,
'烧窑缺陷_水滴' AS CNUM57,
'烧窑缺陷_风惊' AS CNUM58,
'烧窑缺陷_针孔' AS CNUM59,
'烧窑缺陷_合计' AS CNUM60,
'其他缺陷_崩脏' AS CNUM61,
'其他缺陷_坯磕' AS CNUM62,
'其他缺陷_研磨' AS CNUM63,
'其他缺陷_复烧修补不良' AS CNUM64,
'其他缺陷_合计' AS CNUM65,
'研磨缺陷_眼' AS CNUM66,
'研磨缺陷_底' AS CNUM67,
'研磨缺陷_底和面' AS CNUM68,
'研磨缺陷_面' AS CNUM69,
'研磨缺陷_边' AS CNUM70,
'研磨缺陷_研磨配盖' AS CNUM71,
'研磨缺陷_合计' AS CNUM72,
'合计' AS CNUM73
)
)
) TD ON TA.GID = TD.D_GID
AND
(
( TA.GID = 0 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE AND TA.GOODSCODE = TD.D_GOODSCODE )
OR ( TA.GID = 1 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE )
OR ( TA.GID = 3 )
)
)
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", z));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
//sqlPara.Add(new CDAParameter("BUILDINGNO", str));
//sqlPara.Add(new CDAParameter("KILNID", br));
//sqlPara.Add(new CDAParameter("PROCEDUREID", s));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
// }
//}
// }
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(z + "年" + t + "月:export014每窑质量总缺陷统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(z + "年" + t + "月:export014每窑质量总缺陷统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export014每窑质量总缺陷统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export015()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export015 成型废品统计表结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string sqlStr = @"delete JZ_RPT015 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
string sqlStr1 = @" INSERT INTO JZ_RPT015 SELECT * FROM (SELECT DECODE(GROUPING_ID(MU.USERCODE, U.USERCODE, P.GOODSCODE)
,7
,'合计'
,MU.USERCODE) AS 组号
,MU.USERNAME AS 组名
,U.USERCODE||decode(PP.USERCODE,null,null,'['|| PP.USERCODE ||']') AS 工号
,U.USERNAME||decode(PP.USERCODE,null,null,'['|| PU.USERNAME ||']') AS 姓名
,P.GOODSCODE AS 产品编码
,COUNT(*) AS 废品数,
'0' as BUILDINGNO,
'0' as DEFECTPROCEDUREID,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_PRODUCTIONDATA PP
ON PP.groutingdailydetailid = P.groutingdailydetailid
AND PP.procedureID = 1
LEFT JOIN TP_MST_USER PU
ON PU.USERID = PP.USERID
INNER JOIN TP_MST_USER U
ON U.USERID = P.GROUTINGUSERID
INNER JOIN TP_PC_GROUTINGLINE L
ON P.GROUTINGLINEID = L.GROUTINGLINEID
LEFT JOIN TP_MST_USER MU
ON MU.USERID = L.MONITORID
WHERE P.VALUEFLAG = '1' AND P.CHECKBATCHNO = 1
AND P.PROCEDUREID = 13
AND P.GOODSLEVELTYPEID <> 4
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
AND P.ISREFIRE = '0'
AND EXISTS
(SELECT D.DEFECTID
FROM TP_PM_DEFECT D
INNER JOIN TP_MST_DEFECTFINE F
ON D.DEFECTFINE = F.DEFECTFINEID
WHERE P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
AND D.DEFECTID = 1
AND F.DEFECTFINECODE = '1.5'
AND D.DEFECTUSERID = P.GROUTINGUSERID
)
GROUP BY GROUPING SETS((MU.USERCODE, MU.USERNAME, U.USERCODE, U.USERNAME, PP.USERCODE, PU.USERNAME, P.GOODSCODE),(MU.USERCODE, MU.USERNAME),())
ORDER BY 组号, 工号, GROUPING_ID(MU.USERCODE, U.USERCODE, PP.USERCODE, P.GOODSCODE)
)
WHERE 产品编码 IS NOT NULL
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export015成型废品统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export015成型废品统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export015成型废品统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export016()
{
using (IDataAccess conn = DataAccess.Create())
{
//2021-08-2 dongyan 修正什么问题
Curtain.Log.Logger.Debug("export016 回收合格汇总表结转开始!");
int result = 0;
int result1 = 0;
int result2 = 0;
int result3 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
conn.Open();
conn.BeginTransaction();
try
{
string sqlStr = @"delete AJZ_RPT016_YM WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
string Str = @"delete AJZ_RPT016_QT WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
string sqlStr1 = @" INSERT INTO AJZ_RPT016_YM
SELECT * FROM(SELECT
UPD.USERCODE AS 工号,
CDU.STAFFNAME AS 姓名,
J.JOBSNAME AS 工种,
G.GOODSMODEL AS 产品型号,
RU.USERCODE AS 生产工号,
RU.USERNAME AS 生产姓名,
COUNT( DISTINCT TT.UPDID ) AS 回收检验数,
COUNT( DISTINCT TT.UPDID ) - COUNT( DISTINCT TT.dnum ) AS 回收合格数,
SUM( DECODE( TT.DEFECTID, 68, 1, NULL ) ) AS 研磨缺陷_眼,
SUM( DECODE( TT.DEFECTID, 69, 1, NULL ) ) AS 研磨缺陷_底,
SUM( DECODE( TT.DEFECTID, 70, 1, NULL ) ) AS 研磨缺陷_底和面,
SUM( DECODE( TT.DEFECTID, 94, 1, NULL ) ) AS 研磨缺陷_面,
SUM( DECODE( TT.DEFECTID, 95, 1, NULL ) ) AS 研磨缺陷_边,
SUM( DECODE( TT.DEFECTID, 96, 1, NULL ) ) AS 研磨缺陷_研磨配盖,
'0' as JOBSID,
'0' as BUILDINGNO,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM (SELECT T.PRODUCTIONDATAID,
D.DEFECTID,
(
select
case
when count(d.PRODUCTIONDEFECTID) > 0 then
T.PRODUCTIONDATAID
else
null
end dnum
from TP_PM_DEFECT D
WHERE D.PRODUCTIONDATAID = T.PRODUCTIONDATAID
AND D.DEFECTID = 78) dnum,
MIN(CASE
WHEN T.PRODUCTIONDATAID < PD.PRODUCTIONDATAID THEN
PD.PRODUCTIONDATAID
ELSE
NULL
END) NEXTPDID,
MAX(CASE
WHEN T.PRODUCTIONDATAID > PD.PRODUCTIONDATAID AND
PD.MODELTYPE <> -1 THEN
PD.PRODUCTIONDATAID
ELSE
0
END) REPDID,
MAX(CASE
WHEN T.PRODUCTIONDATAID >= PD.PRODUCTIONDATAID AND
PD.CHECKFLAG = 3 THEN
PD.PRODUCTIONDATAID
ELSE
0
END) UPDID
FROM TP_PM_PRODUCTIONDATA T
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = T.PRODUCTIONDATAID
AND D.DEFECTID IN (68, 69, 70, 94, 95, 96)
INNER JOIN TP_PM_PRODUCTIONDATA PD ON T.BARCODE = PD.BARCODE
AND T.KILNCARBATCHNO =
PD.KILNCARBATCHNO
AND (PD.MODELTYPE = -1 OR
PD.VALUEFLAG = '1')
WHERE
T.CREATETIME >= @DATEBEGIN@
AND T.CREATETIME < @DATEEND@
AND T.MODELTYPE = -1
GROUP BY T.PRODUCTIONDATAID, T.GOODSLEVELTYPEID ,D.DEFECTID) TT
LEFT JOIN TP_PM_PRODUCTIONDATA NPD ON NPD.PRODUCTIONDATAID = TT.NEXTPDID
INNER JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = TT.REPDID
INNER JOIN TP_MST_USER RU ON RU.USERID = (case when RPD.PROCEDUREID = 23 then--生产工号 姓名
FUN_RPT_GetPrevPD_USERID_ALL(RPD.PRODUCTIONDATAID,
RPD.barcode) else
RPD.USERID end)
INNER JOIN TP_PM_PRODUCTIONDATA UPD ON UPD.PRODUCTIONDATAID = TT.UPDID --工号
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = RPD.GROUTINGLINEID --楼号查询提哦啊见
INNER JOIN TP_MST_GOODS G ON RPD.GOODSID = G.GOODSID --产品型号
LEFT JOIN TP_PC_CLASSESDETAIL CD ON UPD.CLASSESSETTINGID =CD.CLASSESSETTINGID
LEFT JOIN TP_MST_JOBS J ON J.JOBSID = CD.UJOBSID --工种
LEFT JOIN TP_HR_STAFF CDU ON CDU.STAFFID = CD.STAFFID --姓名
-- LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = TT.PRODUCTIONDATAID
-- AND TT.dnum IS NULL
-- AND D.DEFECTID IN (68, 69, 70, 94, 95, 96)
WHERE (NPD.PRODUCTIONDATAID IS NULL OR NPD.MODELTYPE > -1)
AND RPD.PROCEDUREID IN (20, 23)
GROUP BY GROUPING SETS((UPD.USERCODE, CDU.STAFFNAME, G.GOODSMODEL, RU.USERCODE, RU.USERNAME, J.JOBSNAME),(UPD.USERCODE, CDU.STAFFNAME, J.JOBSNAME))
ORDER BY UPD.USERCODE, CDU.STAFFNAME, J.JOBSNAME, G.GOODSMODEL
)D WHERE D.产品型号 is not null";
string sqlStr2 = @"INSERT INTO AJZ_RPT016_QT SELECT * FROM (SELECT
UPD.USERCODE AS 工号,
CDU.STAFFNAME AS 姓名,
J.JOBSNAME AS 工种,
G.GOODSMODEL AS 产品型号,
RU.USERCODE AS 生产工号,
RU.USERNAME AS 生产姓名,
COUNT( DISTINCT TT.UPDID ) AS 回收检验数,
COUNT( DISTINCT TT.UPDID )-SUM( dnum ) AS 回收合格数,
'0' as JOBSID,
'0' as BUILDINGNO,
'1',
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
T.PRODUCTIONDATAID,
(select case when count(d.PRODUCTIONDEFECTID) > 0 then 1 else 0 end dnum from TP_PM_DEFECT D WHERE D.PRODUCTIONDATAID = T.PRODUCTIONDATAID AND D.DEFECTID = 72) dnum,
MIN( CASE WHEN T.PRODUCTIONDATAID < PD.PRODUCTIONDATAID THEN PD.PRODUCTIONDATAID ELSE NULL END ) NEXTPDID,
MAX( CASE WHEN T.PRODUCTIONDATAID > PD.PRODUCTIONDATAID AND PD.MODELTYPE <> -1 THEN PD.PRODUCTIONDATAID ELSE 0 END ) REPDID,
MAX( CASE WHEN T.PRODUCTIONDATAID >= PD.PRODUCTIONDATAID AND PD.CHECKFLAG = 3 THEN PD.PRODUCTIONDATAID ELSE 0 END ) UPDID
FROM
TP_PM_PRODUCTIONDATA T
INNER JOIN TP_PM_PRODUCTIONDATA PD ON T.BARCODE = PD.BARCODE
AND T.KILNCARBATCHNO = PD.KILNCARBATCHNO AND (PD.MODELTYPE = -1 OR PD.VALUEFLAG='1')
WHERE
T.CREATETIME >= @DATEBEGIN@
AND T.CREATETIME < @DATEEND@
AND T.MODELTYPE = -1
GROUP BY
T.PRODUCTIONDATAID
) TT
LEFT JOIN TP_PM_PRODUCTIONDATA NPD ON NPD.PRODUCTIONDATAID = TT.NEXTPDID
INNER JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = TT.REPDID
INNER JOIN TP_MST_USER RU ON RU.USERID = RPD.USERID
INNER JOIN TP_PM_PRODUCTIONDATA UPD ON UPD.PRODUCTIONDATAID = TT.UPDID
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = RPD.GROUTINGLINEID
INNER JOIN TP_MST_GOODS G ON RPD.GOODSID = G.GOODSID
LEFT JOIN TP_PC_CLASSESDETAIL CD ON UPD.CLASSESSETTINGID = CD.CLASSESSETTINGID
LEFT JOIN TP_HR_STAFF CDU ON CDU.STAFFID = CD.STAFFID
LEFT JOIN TP_MST_JOBS J ON J.JOBSID = CD.UJOBSID
WHERE
( NPD.PRODUCTIONDATAID IS NULL OR NPD.MODELTYPE > -1 )
AND RPD.PROCEDUREID = 22
GROUP BY
GROUPING SETS (
( UPD.USERCODE, CDU.STAFFNAME, G.GOODSMODEL, RU.USERCODE, RU.USERNAME, J.JOBSNAME ),
( UPD.USERCODE, CDU.STAFFNAME, J.JOBSNAME )
) )D WHERE D.产品型号 IS NOT NULL";
string sqlStr3 = @"INSERT INTO AJZ_RPT016_QT SELECT * FROM (SELECT
UPD.USERCODE AS 工号,
CDU.STAFFNAME AS 姓名,
J.JOBSNAME AS 工种,
G.GOODSMODEL AS 产品型号,
RU.USERCODE AS 生产工号,
RU.USERNAME AS 生产姓名,
COUNT( DISTINCT TT.UPDID ) AS 回收检验数,
COUNT( DISTINCT TT.UPDID )-SUM( dnum ) AS 回收合格数,
'0' as JOBSID,
'0' as BUILDINGNO,
'2' ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
T.PRODUCTIONDATAID,
(select case when count(d.PRODUCTIONDEFECTID) > 0 then 1 else 0 end dnum from TP_PM_DEFECT D WHERE D.PRODUCTIONDATAID = T.PRODUCTIONDATAID AND D.DEFECTID = 72) dnum,
MIN( CASE WHEN T.PRODUCTIONDATAID < PD.PRODUCTIONDATAID THEN PD.PRODUCTIONDATAID ELSE NULL END ) NEXTPDID,
MAX( CASE WHEN T.PRODUCTIONDATAID > PD.PRODUCTIONDATAID AND PD.MODELTYPE <> -1 THEN PD.PRODUCTIONDATAID ELSE 0 END ) REPDID,
MAX( CASE WHEN T.PRODUCTIONDATAID >= PD.PRODUCTIONDATAID AND PD.CHECKFLAG = 3 THEN PD.PRODUCTIONDATAID ELSE 0 END ) UPDID
FROM
TP_PM_PRODUCTIONDATA T
INNER JOIN TP_PM_PRODUCTIONDATA PD ON T.BARCODE = PD.BARCODE
AND T.KILNCARBATCHNO = PD.KILNCARBATCHNO AND (PD.MODELTYPE = -1 OR PD.VALUEFLAG='1')
WHERE
T.CREATETIME >= @DATEBEGIN@
AND T.CREATETIME < @DATEEND@
AND T.MODELTYPE = -1
GROUP BY
T.PRODUCTIONDATAID
) TT
LEFT JOIN TP_PM_PRODUCTIONDATA NPD ON NPD.PRODUCTIONDATAID = TT.NEXTPDID
INNER JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = TT.REPDID
INNER JOIN TP_MST_USER RU ON RU.USERID = RPD.USERID
INNER JOIN TP_PM_PRODUCTIONDATA UPD ON UPD.PRODUCTIONDATAID = TT.UPDID
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = RPD.GROUTINGLINEID
INNER JOIN TP_MST_GOODS G ON RPD.GOODSID = G.GOODSID
LEFT JOIN TP_PC_CLASSESDETAIL CD ON UPD.CLASSESSETTINGID = CD.CLASSESSETTINGID
LEFT JOIN TP_HR_STAFF CDU ON CDU.STAFFID = CD.STAFFID
LEFT JOIN TP_MST_JOBS J ON J.JOBSID = CD.UJOBSID
WHERE
( NPD.PRODUCTIONDATAID IS NULL OR NPD.MODELTYPE > -1 )
AND RPD.PROCEDUREID = 23
GROUP BY
GROUPING SETS (
( UPD.USERCODE, CDU.STAFFNAME, G.GOODSMODEL, RU.USERCODE, RU.USERNAME, J.JOBSNAME ),
( UPD.USERCODE, CDU.STAFFNAME, J.JOBSNAME )
) )D WHERE D.产品型号 IS NOT NULL";
string sqlStr4 = @"INSERT INTO AJZ_RPT016_QT SELECT * FROM (SELECT
UPD.USERCODE AS 工号,
CDU.STAFFNAME AS 姓名,
J.JOBSNAME AS 工种,
G.GOODSMODEL AS 产品型号,
RU.USERCODE AS 生产工号,
RU.USERNAME AS 生产姓名,
COUNT( TT.UPDID ) AS 回收检验数,
SUM( decode(TT.GOODSLEVELTYPEID,4,1,5,1,0) ) AS 回收合格数,
'0' as JOBSID,
'0' as BUILDINGNO,
'3',
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
T.PRODUCTIONDATAID,
T.GOODSLEVELTYPEID,
MIN( CASE WHEN T.PRODUCTIONDATAID < PD.PRODUCTIONDATAID THEN PD.PRODUCTIONDATAID ELSE NULL END ) NEXTPDID,
MAX( CASE WHEN T.PRODUCTIONDATAID > PD.PRODUCTIONDATAID AND PD.MODELTYPE <> -1 THEN PD.PRODUCTIONDATAID ELSE 0 END ) REPDID,
MAX( CASE WHEN T.PRODUCTIONDATAID >= PD.PRODUCTIONDATAID AND PD.CHECKFLAG = 3 THEN PD.PRODUCTIONDATAID ELSE 0 END ) UPDID
FROM
TP_PM_PRODUCTIONDATA T
INNER JOIN TP_PM_PRODUCTIONDATA PD ON T.BARCODE = PD.BARCODE
AND T.KILNCARBATCHNO = PD.KILNCARBATCHNO AND (PD.MODELTYPE = -1 OR PD.VALUEFLAG='1')
WHERE
T.CREATETIME >= @DATEBEGIN@
AND T.CREATETIME < @DATEEND@
AND T.MODELTYPE = -1
GROUP BY
T.PRODUCTIONDATAID,
T.GOODSLEVELTYPEID
) TT
LEFT JOIN TP_PM_PRODUCTIONDATA NPD ON NPD.PRODUCTIONDATAID = TT.NEXTPDID
INNER JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = TT.REPDID
INNER JOIN TP_MST_USER RU ON RU.USERID = RPD.USERID
INNER JOIN TP_PM_PRODUCTIONDATA UPD ON UPD.PRODUCTIONDATAID = TT.UPDID
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = RPD.GROUTINGLINEID
INNER JOIN TP_MST_GOODS G ON RPD.GOODSID = G.GOODSID
LEFT JOIN TP_PC_CLASSESDETAIL CD ON UPD.CLASSESSETTINGID = CD.CLASSESSETTINGID
LEFT JOIN TP_HR_STAFF CDU ON CDU.STAFFID = CD.STAFFID
LEFT JOIN TP_MST_JOBS J ON J.JOBSID = CD.UJOBSID
WHERE
( NPD.PRODUCTIONDATAID IS NULL OR NPD.MODELTYPE > -1 )
AND RPD.PROCEDUREID = 37
GROUP BY
GROUPING SETS (
( UPD.USERCODE, CDU.STAFFNAME, G.GOODSMODEL, RU.USERCODE, RU.USERNAME, J.JOBSNAME ),
( UPD.USERCODE, CDU.STAFFNAME, J.JOBSNAME )
)
) D WHERE D.产品型号 IS NOT NULL";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
result1 += conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
result2 += conn.ExecuteNonQuery(sqlStr3, sqlPara.ToArray());
result3 += conn.ExecuteNonQuery(sqlStr4, sqlPara.ToArray());
}
conn.Commit();
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export016回收合格汇总表结转失败!");
}
finally
{
conn.Close();
}
if (result > 0 && result1 > 0 && result2 > 0 && result3 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export016回收合格汇总表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export016回收合格汇总表结转0条!");
}
}
}
public static void export017()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
Curtain.Log.Logger.Debug("export017 成检产量统计表结转开始!");
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string mouth = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string year = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(year + mouth);
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string sqlStr = @"DELETE FROM AJZ_RPT017 WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(year + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
//for (int j = 0; j <= 2; j++)
//{
//String str = j + "#";
String sqlStr1 = @"
INSERT INTO AJZ_RPT017
SELECT
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0')),
DECODE( GROUPING_ID ( U.USERCODE, PP.GOODSMODEL, CDU.STAFFNAME), 2, U.USERCODE || CDU.STAFFNAME || '[合计]', 3, '总计', U.USERCODE ) AS 工号,
--U.USERNAME AS 姓名,
CDU.STAFFNAME AS 姓名,
J.JOBSNAME AS 工种,
PP.GOODSMODEL AS 产品型号,
SUM( PP.CHECKNUM1 ) AS 检验数_本烧,
SUM( PP.CHECKNUM2 ) AS 检验数_重烧,
SUM( PP.CHECKNUM3 ) AS 首检数_本烧,
SUM( PP.CHECKNUM4 ) AS 首检数_重烧,
SUM( PP.OK_B ) AS 合格数_本烧,
SUM( PP.OK_R ) AS 合格数_重烧,
SUM( PP.OK_L ) AS 合格数_冷补,
SUM( PP.OK_ALL ) AS 合格数_合计,
SUM( PP.OK_P ) AS 包装入仓,
--CASE WHEN SUM( PP.OUT_K ) = 0 THEN NULL ELSE ROUND( SUM( PP.OK_ALL ) / SUM( PP.OUT_K ), 4 ) * 100 END AS 合格率,
SUM( PP.DNUM1 ) AS 本烧缺陷数_排水不良,
SUM( PP.DNUM2 ) AS 本烧缺陷数_漏气,
SUM( PP.DNUM3 ) AS 重烧缺陷数_排水不良,
SUM( PP.DNUM4 ) AS 重烧缺陷数_漏气,
'0','0'
FROM
(
SELECT
CASE WHEN PC.USERID IS NOT NULL THEN PC.USERID ELSE PM.USERID END USERID,
CASE WHEN PC.CDUSERID IS NOT NULL THEN PC.CDUSERID ELSE PM.CDUSERID END CDUSERID,
NVL(PC.JOBSID,PM.JOBSID) JOBSID,
NVL( PC.GOODSID, PM.GOODSID ) GOODSID,
NVL( PC.GOODSMODEL, PM.GOODSMODEL ) GOODSMODEL,
NVL( PM.OK_P,0) OK_P,
NVL( PC.CHECKNUM1, 0 ) CHECKNUM1,
NVL( PC.CHECKNUM2, 0 ) CHECKNUM2,
NVL( PC.CHECKNUM3, 0 ) CHECKNUM3,
NVL( PC.CHECKNUM4, 0 ) CHECKNUM4,
NVL( PM.DNUM1, 0 ) DNUM1,
NVL( PM.DNUM2, 0 ) DNUM2,
NVL( PM.DNUM3, 0 ) DNUM3,
NVL( PM.DNUM4, 0 ) DNUM4,
--NVL( PM.OUT_K, 0 ) OUT_K,
NVL( PM.OK_B, 0 ) OK_B,
NVL( PM.OK_R, 0 ) OK_R,
NVL( PM.OK_L, 0 ) OK_L,
NVL( PM.OK_ALL, 0 ) OK_ALL
FROM
--取用户和产品
(
SELECT
P.USERID,
-- 员工ID
CD.STAFFID AS CDUSERID,
CD.SJOBSID AS JOBSID,
P.GOODSID,
G.GOODSMODEL,
SUM( DECODE( P.PROCEDUREID, 13, 1, 0 ) ) CHECKNUM1,
SUM( DECODE( P.PROCEDUREID, 35, 1, 0 ) ) CHECKNUM2,
--xuwei add
SUM( CASE WHEN P.PROCEDUREID = 13 AND P.CHECKFLAG = 1 THEN 1 ELSE 0 END) CHECKNUM3,
SUM( CASE WHEN P.PROCEDUREID = 35 AND P.CHECKFLAG = 1 THEN 1 ELSE 0 END) CHECKNUM4
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
--关联班次配置
LEFT JOIN TP_PC_CLASSESDETAIL CD ON P.CLASSESSETTINGID = CD.CLASSESSETTINGID
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = P.GOODSID
WHERE
P.CHECKFLAG IN ( 1,3 )
AND P.PROCEDUREID IN ( 13, 35 )
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME < @DATEEND@
GROUP BY
P.USERID,
CD.SJOBSID,
-- 员工ID
CD.STAFFID,
P.GOODSID,
G.GOODSMODEL
) PC
FULL JOIN
--统计检验数合格数
(
SELECT
P.USERID,
-- 员工ID
CD.STAFFID AS CDUSERID,
CD.SJOBSID AS JOBSID,
P.GOODSID,
P.GOODSMODEL,
COUNT(distinct CASE WHEN ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND P.PROCEDUREID IN (13,35) AND NOT PDP.BARCODE IS NULL THEN P.BARCODE
ELSE NULL END) AS OK_P,
COUNT(distinct CASE WHEN ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND P.PROCEDUREID = 13 AND PDD.PROCEDUREID IS NULL THEN P.PRODUCTIONDATAID
ELSE NULL END ) AS OK_B,
COUNT(distinct CASE WHEN ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND P.PROCEDUREID = 35 AND PDD.PROCEDUREID IS NULL THEN P.PRODUCTIONDATAID
ELSE NULL END ) AS OK_R,
COUNT(distinct CASE WHEN ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND NOT PDD.PROCEDUREID IS NULL THEN P.PRODUCTIONDATAID
ELSE NULL END ) AS OK_L,
COUNT(distinct DECODE( P.GOODSLEVELTYPEID, 4, P.PRODUCTIONDATAID, 5, P.PRODUCTIONDATAID, NULL ) ) AS OK_ALL ,
SUM( CASE WHEN P.GOODSLEVELTYPEID NOT IN (4,5) AND D.DEFECTID IN(9) AND P.PROCEDUREID = 13 THEN 1 ELSE 0 END) AS DNUM1,
SUM( CASE WHEN P.GOODSLEVELTYPEID NOT IN (4,5) AND D.DEFECTID IN(11) AND P.PROCEDUREID = 13 THEN 1 ELSE 0 END) AS DNUM2,
SUM( CASE WHEN P.GOODSLEVELTYPEID NOT IN (4,5) AND D.DEFECTID IN(9) AND P.PROCEDUREID = 35 THEN 1 ELSE 0 END) AS DNUM3,
SUM( CASE WHEN P.GOODSLEVELTYPEID NOT IN (4,5) AND D.DEFECTID IN(11) AND P.PROCEDUREID = 35 THEN 1 ELSE 0 END) AS DNUM4
FROM
(
SELECT
TP.PRODUCTIONDATAID,
TP.BARCODE,
TP.USERID,
TP.GOODSID,
G.GOODSMODEL,
TP.GROUTINGLINEID,
TP.GOODSLEVELTYPEID,
TP.PROCEDUREID,
MAX( PMAX.PRODUCTIONDATAID ) AS MAXPRODUCTIONDATAID,
TP.CLASSESSETTINGID
FROM
TP_PM_PRODUCTIONDATA TP
INNER JOIN TP_PC_GROUTINGLINE L ON TP.GROUTINGLINEID = L.GROUTINGLINEID
LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = TP.GROUTINGDAILYDETAILID
AND PMAX.PRODUCTIONDATAID < TP.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = TP.GOODSID
WHERE
TP.CHECKBATCHNO = 1
AND TP.PROCEDUREID IN ( 13, 35 )
AND TP.CREATETIME >= @DATEBEGIN@
AND TP.CREATETIME < @DATEEND@
GROUP BY
TP.PRODUCTIONDATAID,
TP.BARCODE,
TP.USERID,
TP.GOODSID,
G.GOODSMODEL,
TP.GROUTINGLINEID,
TP.GOODSLEVELTYPEID,
TP.PROCEDUREID,
TP.CLASSESSETTINGID
) P
--xuwei add 2020-11-13 取包装入库数据
LEFT JOIN TP_PM_PRODUCTIONDATA PDP ON P.BARCODE = PDP.BARCODE AND PDP.PROCEDUREID = 15 AND PDP.VALUEFLAG = '1'
LEFT JOIN TP_PM_PRODUCTIONDATA PDD ON P.MAXPRODUCTIONDATAID = PDD.PRODUCTIONDATAID AND PDD.PROCEDUREID IN ( 22, 23 )
--统计 排水不良9 和 漏气11 数量
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID AND D.DEFECTID IN(9,11)
--关联班次配置
LEFT JOIN TP_PC_CLASSESDETAIL CD ON P.CLASSESSETTINGID = CD.CLASSESSETTINGID
GROUP BY
P.USERID,
-- 员工ID
CD.STAFFID,
CD.SJOBSID,
P.GOODSID,
P.GOODSMODEL
) PM ON PM.USERID = PC.USERID AND PM.GOODSID = PC.GOODSID AND PM.CDUSERID = PC.CDUSERID
) PP
LEFT JOIN TP_MST_USER U ON U.USERID = PP.USERID
-- 员工ID
LEFT JOIN TP_HR_STAFF CDU ON CDU.STAFFID = PP.CDUSERID
LEFT JOIN TP_MST_JOBS J ON J.JOBSID = PP.JOBSID
GROUP BY
GROUPING SETS ( ( U.USERCODE,CDU.STAFFNAME, U.USERNAME, PP.GOODSMODEL,J.JOBSNAME ), ( U.USERCODE,CDU.STAFFNAME, U.USERNAME ) ) ";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", year));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
//}
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export017成检产量统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export017成检产量统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export017成检产量统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export018()
{
using (IDataAccess conn = DataAccess.Create())
{
//2021-08-2 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string dayOut = b + "-" + a + "-" + DateTime.DaysInMonth(Convert.ToInt32(b), m).ToString();
conn.Open();
conn.BeginTransaction();
try
{
String sqlStr = @"delete JZ_RPT018_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
String Str = @"delete JZ_RPT018_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @" INSERT INTO JZ_RPT018_M SELECT @M@,
@M@
,'张迪'
,''
,'张迪'
,CASE
WHEN SUM(T.DNUM) < 0 THEN
'1'
ELSE
'0'
END
,''
,T.FNAME_CODE
,T.FNAME
,''
,'01.094'
,'张迪'
,'01.094'
,'张迪'
,'01.001'
,'唐山中陶实业有限公司'
,''
,T.FNAME_FLAG
,to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM (SELECT 1 AS DNUM
,CASE
WHEN TS.PROCEDUREID IN (26, 27, 38) THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID IN (3, 39) THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID IN (24, 4, 5, 6, 10, 16, 34) THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID = 31 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN
'窑坯(一期)'
WHEN TS.PROCEDUREID = 21 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN
'窑坯(一期)'
ELSE
NULL
END FNAME_FLAG
,CASE
WHEN TS.PROCEDUREID IN (26, 27, 38) THEN
'009'
WHEN TS.PROCEDUREID IN (3, 39) THEN
'009'
WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN
'010'
WHEN TS.PROCEDUREID IN (24, 4, 5, 6, 10, 16, 34) THEN
'010'
WHEN TS.PROCEDUREID = 31 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN
'011'
WHEN TS.PROCEDUREID = 21 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN
'011'
ELSE
NULL
END FNAME_CODE
,CASE
WHEN TS.PROCEDUREID IN (26, 27, 38) THEN
'一期成型车间'
WHEN TS.PROCEDUREID IN (3, 39) THEN
'一期成型车间'
WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN
'一期施釉车间'
WHEN TS.PROCEDUREID IN (24, 4, 5, 6, 10, 16, 34) THEN
'一期施釉车间'
WHEN TS.PROCEDUREID = 31 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN
'一期烧成车间'
WHEN TS.PROCEDUREID = 21 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN
'一期烧成车间'
ELSE
NULL
END FNAME
FROM TP_PM_SCRAPPRODUCT TS
INNER JOIN TP_PM_PRODUCTIONDATA PD
ON TS.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
WHERE TS.AUDITSTATUS = 1
AND TS.GOODSLEVELTYPEID IN (8, 9)
AND TS.AUDITDATE >=@DATEBEGIN@
AND TS.AUDITDATE <= @DATEEND@
AND TS.PROCEDUREID IN (3
,26
,27
,38
,39
,28
,29
,30
,32
,33
,24
,4, 5
,6
,10
,16, 34
,21
,31
,9)
UNION ALL
SELECT 1 AS DNUM
,CASE
WHEN TS.OTHERID IN (26, 27, 38) THEN
'精坯库(一期)'
WHEN TS.OTHERID IN (3, 39) THEN
'精坯库(一期)'
WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN
'釉坯库(一期)'
WHEN TS.OTHERID IN (24, 4, 5, 6, 10, 16, 34) THEN
'釉坯库(一期)'
WHEN TS.OTHERID = 31 OR
(TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN
'窑坯(一期)'
WHEN TS.OTHERID = 21 OR
(TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN
'窑坯(一期)'
ELSE
NULL
END FNAME_FLAG
,CASE
WHEN TS.OTHERID IN (26, 27, 38) THEN
'009'
WHEN TS.OTHERID IN (3, 39) THEN
'009'
WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN
'010'
WHEN TS.OTHERID IN (24, 4, 5, 6, 10, 16, 34) THEN
'010'
WHEN TS.OTHERID = 31 OR
(TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN
'011'
WHEN TS.OTHERID = 21 OR
(TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN
'011'
ELSE
NULL
END FNAME_CODE
,CASE
WHEN TS.OTHERID IN (26, 27, 38) THEN
'一期成型车间'
WHEN TS.OTHERID IN (3, 39) THEN
'一期成型车间'
WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN
'一期施釉车间'
WHEN TS.OTHERID IN (24, 4, 5, 6, 10, 16, 34) THEN
'一期施釉车间'
WHEN TS.OTHERID = 31 OR
(TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN
'一期烧成车间'
WHEN TS.OTHERID = 21 OR
(TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN
'一期烧成车间'
ELSE
NULL
END FNAME
FROM TP_PM_GOODSCHANGEHISTORY TS
LEFT JOIN TP_PM_PRODUCTIONDATA PD
ON TS.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID AND TS.OTHERID = 9 AND PD.PROCEDUREID=9
WHERE TS.DATATYPE = 11
AND TS.CREATETIME >=@DATEBEGIN@
AND TS.CREATETIME <=@DATEEND@
AND TS.OTHERID IN (3
,26
,27
,38
,39
,28
,29
,30
,32
,33
,24
,4, 5
,6
,10
,16, 34
,21
,31
,9)) T
WHERE ('' IS NULL OR T.FNAME_FLAG = '')
GROUP BY T.FNAME_CODE, T.FNAME, T.FNAME_FLAG
ORDER BY T.FNAME_CODE, T.FNAME";
List sqlPara1 = new List();
sqlPara1.Add(new CDAParameter("I", i));
sqlPara1.Add(new CDAParameter("YEAR", b));
sqlPara1.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara1.Add(new CDAParameter("DATEBEGIN", dayBegin));
sqlPara1.Add(new CDAParameter("M", dayOut));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara1.ToArray());
String sqlStr2 = @"INSERT INTO JZ_RPT018_D
SELECT ''
,''
,''
,K.K_CODE
,T.GOODS_CODE
,''
,''
,''
,'*'
,'件'
,'件'
,0
,SUM(T.DNUM)
,0
,'破损'
,SUM(T.DNUM)
,''
,''
,T.FNAME
,''
,''
,to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM (SELECT CASE
WHEN TS.PROCEDUREID IN (3, 26, 27, 38, 39) THEN
'J'
WHEN TS.PROCEDUREID IN (21, 31, 9) THEN
'S'
ELSE
'Y'
END || G.GOODSMODEL AS GOODS_CODE
,1 AS DNUM
,CASE
WHEN TS.PROCEDUREID IN (26, 27, 38) THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID IN (3, 39) THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID IN (24, 4, 5, 6, 10, 16, 34) THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID = 31 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN
'窑坯(一期)'
WHEN TS.PROCEDUREID = 21 OR
(TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN
'窑坯(一期)'
ELSE
NULL
END FNAME
FROM TP_PM_SCRAPPRODUCT TS
INNER JOIN TP_MST_GOODS G
ON TS.GOODSID = G.GOODSID
INNER JOIN TP_PM_PRODUCTIONDATA PD
ON TS.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
WHERE TS.AUDITSTATUS = 1
AND TS.GOODSLEVELTYPEID IN (8, 9)
AND TS.AUDITDATE >= @DATEBEGIN@
AND TS.AUDITDATE <= @DATEEND@
AND TS.PROCEDUREID IN (3
,26
,27
,38
,39
,28
,29
,30
,32
,33
,24
,4, 5
,6
,10
,16, 34
,21
,31
,9)
UNION ALL
SELECT CASE
WHEN TS.OTHERID IN (3, 26, 27, 38, 39) THEN
'J'
WHEN TS.OTHERID IN (21, 31, 9) THEN
'S'
ELSE
'Y'
END || G.GOODSMODEL AS GOODS_CODE
,1 AS DNUM
,CASE
WHEN TS.OTHERID IN (26, 27, 38) THEN
'精坯库(一期)'
WHEN TS.OTHERID IN (3, 39) THEN
'精坯库(一期)'
WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN
'釉坯库(一期)'
WHEN TS.OTHERID IN (24, 4, 5, 6, 10, 16, 34) THEN
'釉坯库(一期)'
WHEN TS.OTHERID = 31 OR
(TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN
'窑坯(一期)'
WHEN TS.OTHERID = 21 OR
(TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN
'窑坯(一期)'
ELSE
NULL
END FNAME
FROM TP_PM_GOODSCHANGEHISTORY TS
INNER JOIN TP_MST_GOODS G
ON TS.GOODSID = G.GOODSID
LEFT JOIN TP_PM_PRODUCTIONDATA PD
ON TS.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID AND TS.OTHERID = 9 AND PD.PROCEDUREID=9
WHERE TS.DATATYPE = 11
AND TS.CREATETIME >= @DATEBEGIN@
AND TS.CREATETIME <= @DATEEND@
AND TS.OTHERID IN (3
,26
,27
,38
,39
,28
,29
,30
,32
,33
,24
,4, 5
,6
,10
,16, 34
,21
,31
,9) ) T
LEFT JOIN TA_IMEX_kingdee_Goodscode K ON T.GOODS_CODE = K.K_NAME AND T.FNAME = K.K_WAREHOUSE
WHERE ('' IS NULL OR T.FNAME = '')
GROUP BY K.K_CODE, T.GOODS_CODE, T.FNAME
"
;
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 += conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
;
}
conn.Commit();
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(b + "年" + a + "月 :export018其他出库单结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
if (result > 0 && result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export018其他出库单结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export018其他出库单结转0条!");
}
}
}
public static void export019()
{
using (IDataAccess conn = DataAccess.Create())
{
//2021-08-2 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string dayOut = b + "-" + a + "-" + DateTime.DaysInMonth(Convert.ToInt32(b), m).ToString();
conn.Open();
conn.BeginTransaction();
try
{
String sqlStr = @"delete JZ_RPT019_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
String Str = @"delete JZ_RPT019_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @" INSERT INTO JZ_RPT019_D
SELECT * FROM(
SELECT
'' AS 序列号内码,
'' AS 行号,
'' AS 单据号_FBillno,
'' AS 单据号_FTrantype,
K.K_CODE AS 物料代码_FNumber,
T.GOODS_CODE AS 物料代码_FName,
'' AS 物料代码_FModel,
'' AS 辅助属性_FNumber,
'' AS 辅助属性_FName,
'*' AS 辅助属性_FClassName,
K2.K_CODE AS 成本对象_FNumber,
T.GOODS_CODE2 AS 成本对象_FName,
'' AS 成本对象_FItemClassID,
'*' AS 成本对象组_FNumber,
'*' AS 成本对象组_FName,
'0' AS 成本对象组_FItemClassID,
'件' AS 单位_FNumber,
'件' AS 单位_FName,
0 AS 单价,
'' AS 批号,
0 AS 金额,
0 AS 客户BOM,
SUM( T.DNUM ) AS 实发数量,
'' AS 备注,
SUM( T.DNUM ) AS 基本单位实发数量,
0 AS 保质期,
'' AS 有效期至,
'' AS 发料仓库_FNumber,
T.FNAME AS 发料仓库_FName,
NULL AS 仓位_FName,
NULL AS 仓位_FGroupName,
0 AS 辅助数量,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
CASE
WHEN
TS.PROCEDUREID IN ( 28, 24, 34 ) THEN
'J'
WHEN
TS.PROCEDUREID IN ( 13 ) THEN
'S' ELSE 'Y'
END || G.GOODSMODEL AS GOODS_CODE,
CASE
WHEN TS.PROCEDUREID IN ( 28, 24, 34 ) THEN
'Y'
WHEN TS.PROCEDUREID IN ( 13 ) THEN
'' ELSE 'S'
END || G.GOODSMODEL AS GOODS_CODE2,
1 AS DNUM,
CASE
WHEN TS.PROCEDUREID = 28 THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID IN ( 24, 34 ) THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID = 31 THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID = 21 THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID = 13
AND TS.Kilnid IN ( 1, 2 ) THEN
'窑坯(一期)'
WHEN TS.PROCEDUREID = 13
AND TS.Kilnid IN ( 3, 4 ) THEN
'窑坯(一期)' ELSE NULL
END FNAME,
CASE
WHEN TS.PROCEDUREID = 28 THEN
'一期施釉车间'
WHEN TS.PROCEDUREID IN ( 24, 34 ) THEN
'一期施釉车间'
WHEN TS.PROCEDUREID = 31 THEN
'一期烧成车间'
WHEN TS.PROCEDUREID = 21 THEN
'一期烧成车间'
WHEN TS.PROCEDUREID = 13
AND GL.BUILDINGNO = '1#' THEN
'一期成检组'
WHEN TS.PROCEDUREID = 13
AND GL.BUILDINGNO = '2#' THEN
'一期成检组' ELSE NULL
END FNAME_F
FROM
TP_PM_PRODUCTIONDATA TS
INNER JOIN TP_MST_GOODS G ON TS.GOODSID = G.GOODSID
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = TS.GROUTINGLINEID
WHERE
--2022年1月4日10:11:10 by fy modify begin
--TS.CREATETIME >= @DATEEND@
--AND TS.CREATETIME < @DATEBEGIN@
TS.CREATETIME >= @DATEBEGIN@
AND TS.CREATETIME <= @DATEEND@
--end
AND (
TS.PROCEDUREID IN ( 28, 24, 34, 21, 31 )
OR ( TS.PROCEDUREID = 13 AND TS.CHECKFLAG = 1 )
) ) T
LEFT JOIN TA_IMEX_kingdee_Goodscode K ON T.GOODS_CODE = K.K_NAME
AND T.FNAME = K.K_WAREHOUSE
LEFT JOIN TA_IMEX_kingdee_Goodscode K2 ON K2.K_NAME = T.GOODS_CODE2
AND K2.buildingno = K.buildingno
GROUP BY
K.K_CODE,
K2.K_CODE,
T.GOODS_CODE,
T.GOODS_CODE2,
T.FNAME,
T.FNAME_F )";
List sqlPara1 = new List();
sqlPara1.Add(new CDAParameter("I", i));
sqlPara1.Add(new CDAParameter("YEAR", b));
sqlPara1.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara1.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 += conn.ExecuteNonQuery(sqlStr1, sqlPara1.ToArray());
}
conn.Commit();
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(b + "年" + a + "月:export019生产领料表自动结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
if (result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export019生产领料表自动结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export019生产领料表自动结转0条!");
}
}
}
public static void export020()
{
using (IDataAccess conn = DataAccess.Create())
{
//2021-08-2 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string dayOut = b + "-" + a + "-" + DateTime.DaysInMonth(Convert.ToInt32(b), m).ToString();
conn.Open();
conn.BeginTransaction();
try
{
String sqlStr = @"delete JZ_RPT020_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
String Str = @"delete JZ_RPT020_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
String sqlStr2 = @"INSERT INTO JZ_RPT020_D SELECT * from (" +
"SELECT '' AS 行号\n" +
" ,'' AS \"单据号_FBillno\"\n" +
" ,'' AS \"单据号_FTrantype\"\n" +
" ,K.K_CODE AS \"物料编码_FNumber\"\n" +
" ,T.GOODS_CODE AS \"物料编码_FName\"\n" +
" ,'' AS \"物料编码_FModel\"\n" +
" ,'' AS \"辅助属性_FNumber\"\n" +
" ,'' AS \"辅助属性_FName\"\n" +
" ,'*' AS \"辅助属性_FClassName\"\n" +
" ,'件' AS \"单位_FNumber\"\n" +
" ,'件' AS \"单位_FName\"\n" +
" ,SUM(T.DNUM) AS \"实收数量\"\n" +
" ,0 AS \"单价\"\n" +
" ,0 AS \"金额\"\n" +
" ,'' AS \"备注\"\n" +
" ,SUM(T.DNUM) AS \"基本单位实收数量\"\n" +
" ,'' AS \"生产_采购日期\"\n" +
" ,'' AS \"有效期至\"\n" +
" ,'' AS \"收货仓库_FNumber\"\n" +
" ,T.FNAME AS \"收货仓库_FName\"\n" +
" ,NULL AS \"仓位_FName\"\n" +
" ,NULL AS \"仓位_FGroupName\"\n" +
" ,0 AS \"辅助数量\"\n" +
" ,'0'" +
",to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))" +
" FROM (SELECT CASE\n" +
" WHEN TS.PROCEDUREID IN (3, 26) THEN\n" +
" 'J'\n" +
" WHEN TS.PROCEDUREID IN (21, 31) THEN\n" +
" 'S'\n" +
" ELSE\n" +
" 'Y'\n" +
" END || G.GOODSMODEL AS GOODS_CODE\n" +
" ,1 AS DNUM\n" +
" ,CASE\n" +
" WHEN TS.PROCEDUREID = 26 THEN\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 3 THEN\n" +
//" '精坯库(二期)'\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 28 THEN\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN( 24,34) THEN\n" +
//" '釉坯库(二期)'\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 31 THEN\n" +
" '窑坯(一期)'\n" +
" WHEN TS.PROCEDUREID = 21 THEN\n" +
//" '窑坯(二期)'\n" +
" '窑坯(一期)'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME\n" +
" FROM TP_PM_PRODUCTIONDATA TS\n" +
" INNER JOIN TP_MST_GOODS G\n" +
" ON TS.GOODSID = G.GOODSID\n" +
" WHERE TS.CREATETIME >= @DATEBEGIN@\n" +
" AND TS.CREATETIME < @DATEEND@\n" +
" AND TS.PROCEDUREID IN (3, 26, 28, 24,34, 21, 31)\n" +
") T\n" +
" LEFT JOIN TA_IMEX_kingdee_Goodscode K ON T.GOODS_CODE = K.K_NAME AND T.FNAME = K.K_WAREHOUSE\n" +
// " WHERE (@FNAME_FLAG@ IS NULL OR T.FNAME = @FNAME_FLAG@) \n" +
" GROUP BY K.K_CODE, T.GOODS_CODE, T.FNAME\n" +
" )";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 += conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
}
conn.Commit();
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(b + "年" + a + "月:export020产品入库单结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
if (result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export020产品入库单结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export020产品入库单结转0条!");
}
}
}
public static void export021()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-29 陈强
String sqlStr = @"delete AJZ_RPT021 where FORWARD_TIME = @c@";
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string mouth = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string year = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(year + mouth);
conn.ExecuteNonQuery(sqlStr, new CDAParameter("c", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(year + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
//for (int j = 0; j <= 2; j++)
//{
// String str = j + "#";
String sqlStr1 = @"INSERT INTO AJZ_RPT021 SELECT
*
FROM
(
SELECT DECODE(GID
,7
,TT.组别 || '[小计]'
,15
,TT.组别 || '[合计]'
,TT.组别) 组别
,TT.线号
,TT.产品型号
,DECODE(GID,15, null, TT.标准模型次数) 标准模型次数
,DECODE(GID,15, null, TT.模型次数) 模型次数
,TT.实摆模型
,TT.实际注浆数
,DECODE(GID,15, null, TT.成型工号) 成型工号
,DECODE(GID,15, null, TT.姓名) 姓名
,TT.交坯合格数
,CASE
WHEN TT.实际注浆数 IS NULL OR
TT.实际注浆数 = 0 THEN
NULL
WHEN TT.交坯合格数 IS NULL OR
TT.交坯合格数 = 0 THEN
'0%'
ELSE
TO_CHAR(ROUND(TT.交坯合格数 / TT.实际注浆数, 4) * 100) || '%'
END 实际出坯率 --实际出坯率【交坯合格/注浆数】
,DECODE(GID,15, null, @DAYS@) 计划出勤
,DECODE(GID,15, null, TT.实际出勤) 实际出勤
,DECODE(GID,15, null, TT.实际模具总数) 实际模具总数
,DECODE(GID,15, null, TT.计划批次) 计划批次
,DECODE(GID,15, null, @DAYS@ * TT.实摆模型 * TT.计划批次) 计划模具总数 -- 计划出勤 * 实摆模型数 * 计划批次
,DECODE(GID,15, null, CASE
WHEN @DAYS@ * TT.实摆模型 * TT.计划批次 IS NULL OR @DAYS@ * TT.实摆模型 * TT.计划批次 = 0 THEN
NULL
WHEN TT.交坯合格数 IS NULL OR
TT.交坯合格数 = 0 THEN
'0%'
ELSE
TO_CHAR(ROUND(TT.交坯合格数 / (@DAYS@ * TT.实摆模型 * TT.计划批次), 4) * 100) || '%'
END) 实摆出坯率 ,--实摆出坯率【交坯合格/实际模具数】改为 交坯合格数 / 计划模具总数,
to_number( to_char( @YEAR@ ) || lpad( to_char(@I@ ), 2, '0' ) ),
'0' AS BUILDINGNO,
0 AS GL_MOULDQUANTITY,
0 AS gid,
'0' AS GROUTINGLINEID,
'0' AS HIGHPRESSUREFLAG,
'0' AS GOODSTYPECODE
FROM (
SELECT GROUPING_ID ( PT.M_USERNAME, PT.LINE_NO,PT.GROUTINGLINEID, PT.GOODS_CODE, PT.G_USERCODE ) gid
,PT.M_USERNAME 组别
,PT.LINE_NO 线号
,PT.GOODS_CODE 产品型号
,MAX(PT.STANDARDGROUTINGCOUNT) 标准模型次数
,MAX(PT.MAX_MCOUNT) 模型次数
,DECODE(PT.GOODS_CODE, null, max(PT.GL_MOULDQUANTITY), SUM(PT.MOULDQUANTITY)) 实摆模型
,SUM(PT.GROUTINGNUM) 实际注浆数
,REGEXP_REPLACE(LISTAGG(PT.G_USERCODE, '/') WITHIN
GROUP(ORDER BY PT.G_USERCODE)
,'([^/]+)(/\1)*(/|$)'
,'\1\3') 成型工号
,REGEXP_REPLACE(LISTAGG(PT.G_USERNAME, '/') WITHIN
GROUP(ORDER BY PT.G_USERCODE)
,'([^/]+)(/\1)*(/|$)'
,'\1\3') 姓名
,SUM(PT.D_OKCOUNT) 交坯合格数
,MAX(PT.GROUTINGDATES) 实际出勤
,SUM(PT.S_MOULDQUANTITY) 实际模具总数
,CASE
WHEN PT.HIGHPRESSUREFLAG = '1' AND
--INSTR(PT.GOODSTYPECODE, '001001') = 1
MAX(PT.GOODSTYPECODE2) = '001001' THEN
15
WHEN PT.HIGHPRESSUREFLAG = '1' AND
--INSTR(PT.GOODSTYPECODE, '001002') = 1
MAX(PT.GOODSTYPECODE2) = '001002' THEN
25
WHEN PT.HIGHPRESSUREFLAG = '0' THEN 1
ELSE
NULL
END AS 计划批次
FROM (SELECT TO_CHAR(MU.USERNAME) AS M_USERNAME
,GL.GROUTINGLINEID
,GL.GROUTINGLINENAME AS LINE_NO
,COALESCE(G.GOODSMODEL, P.GOODSMODEL, GL2.GOODSMODEL) AS GOODS_CODE
,COALESCE(G.STANDARDGROUTINGCOUNT, GL2.STANDARDGROUTINGCOUNT) AS STANDARDGROUTINGCOUNT
,COALESCE(G.MAX_MCOUNT, GL2.MAX_MCOUNT) MAX_MCOUNT
,COALESCE(G.MOULDQUANTITY, GL2.MOULDQUANTITY) AS MOULDQUANTITY
,COALESCE(G.GROUTINGNUM, 0) AS GROUTINGNUM
,TO_CHAR(GU.USERCODE) AS G_USERCODE
,TO_CHAR(GU.USERNAME) AS G_USERNAME
,COALESCE(P.D_OKCOUNT, 0) AS D_OKCOUNT
,COALESCE(G.GROUTINGDATES, 0) AS GROUTINGDATES
,COALESCE(G.GROUTINGDATES, 0) * COALESCE(G.MOULDQUANTITY, 0) S_MOULDQUANTITY
--实际模具数【(计划出勤-核减)*成型线的模具数】
,GL.HIGHPRESSUREFLAG,GL.MOULDQUANTITY GL_MOULDQUANTITY
,COALESCE(G.GOODSTYPECODE2
,P.GOODSTYPECODE2
,GL2.GOODSTYPECODE2) AS GOODSTYPECODE2
FROM (SELECT GD.GROUTINGLINEID
,GD.GOODSMODEL
,MAX(GD.STANDARDGROUTINGCOUNT) STANDARDGROUTINGCOUNT
,MAX(GD.MAX_MCOUNT) MAX_MCOUNT
,MAX(GD.MOULDQUANTITY) MOULDQUANTITY
,GD.USERCODE
,GD.USERID
,SUM(GD.GROUTINGNUM) GROUTINGNUM
,COUNT(DISTINCT GD.GROUTINGDATE) GROUTINGDATES
,GD.GOODSTYPECODE2
FROM (SELECT GGDD.GROUTINGDAILYID
,GGDD.GROUTINGDATE
,COUNT(GGDD.GROUTINGDAILYDETAILID) GROUTINGNUM
,GOODS.GOODSMODEL
,GGDD.USERCODE
,GGDD.USERID
,GGDD.GROUTINGLINEID
,SUBSTR(GT.GOODSTYPECODE, 1, 6) GOODSTYPECODE2
,COUNT(GGDD.GROUTINGLINEDETAILID) MOULDQUANTITY
,MAX(GLD.STANDARDGROUTINGCOUNT) STANDARDGROUTINGCOUNT
,MAX(GGDD.GROUTINGCOUNT) MAX_MCOUNT
FROM TP_PM_GROUTINGDAILYDETAIL GGDD
INNER JOIN TP_MST_GOODS GOODS
ON GOODS.GOODSID = GGDD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT
ON GT.GOODSTYPEID = GOODS.GOODSTYPEID
INNER JOIN TP_PC_GROUTINGLINEDETAIL GLD
ON GGDD.GROUTINGLINEDETAILID =
GLD.GROUTINGLINEDETAILID
WHERE GGDD.VALUEFLAG = '1'
AND GGDD.GROUTINGFLAG = '1'
AND GGDD.GROUTINGDATE >= @DATEBEGIN@
AND GGDD.GROUTINGDATE < @DATEEND@
-- AND ( GOODS.GOODSMODEL = @GOODSMODEL@ OR @GOODSMODEL@ IS NULL )
GROUP BY GGDD.GROUTINGDAILYID
,GGDD.GROUTINGDATE
,GOODS.GOODSMODEL
,GGDD.USERCODE
,GGDD.USERID
,GGDD.GROUTINGLINEID
,SUBSTR(GT.GOODSTYPECODE, 1, 6)) GD
GROUP BY GD.GROUTINGLINEID
,GD.GOODSMODEL
--,GD.MOULDQUANTITY
,GD.USERCODE
,GD.USERID
,GD.GOODSTYPECODE2) G
FULL JOIN (SELECT PP.GROUTINGLINEID
,PP.GROUTINGUSERCODE USERCODE
,PP.GROUTINGUSERID USERID
,GOODS.GOODSMODEL
,SUBSTR(GT.GOODSTYPECODE, 1, 6) GOODSTYPECODE2
,COUNT(*) D_OKCOUNT
FROM TP_PM_PRODUCTIONDATA PP
INNER JOIN TP_MST_GOODS GOODS
ON GOODS.GOODSID = PP.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT
ON GT.GOODSTYPEID = GOODS.GOODSTYPEID
WHERE PP.VALUEFLAG = '1'
AND PP.PROCEDUREID IN (3, 26)
AND PP.CREATETIME >= @DATEBEGIN@
AND PP.CREATETIME < @DATEEND@
-- AND ( GOODS.GOODSMODEL = @GOODSMODEL@ OR @GOODSMODEL@ IS NULL )
GROUP BY PP.GROUTINGLINEID
,GOODS.GOODSMODEL
,PP.GROUTINGUSERCODE
,PP.GROUTINGUSERID
,SUBSTR(GT.GOODSTYPECODE, 1, 6)) P
ON P.GROUTINGLINEID = G.GROUTINGLINEID
AND P.GOODSMODEL = G.GOODSMODEL
AND P.GOODSTYPECODE2 = G.GOODSTYPECODE2
AND P.USERID = G.USERID
FULL JOIN (SELECT GLL.GROUTINGLINEID
,GOODS.GOODSMODEL
,MAX(GLD.STANDARDGROUTINGCOUNT) STANDARDGROUTINGCOUNT
,MAX(GLD.GROUTINGCOUNT) MAX_MCOUNT
,COUNT(*) MOULDQUANTITY
,SUBSTR(GT.GOODSTYPECODE, 1, 6) GOODSTYPECODE2
FROM TP_PC_GROUTINGLINE GLL
INNER JOIN TP_PC_GROUTINGLINEDETAIL GLD
ON GLD.GROUTINGLINEID = GLL.GROUTINGLINEID
INNER JOIN TP_MST_GOODS GOODS
ON GOODS.GOODSID = GLD.GOODSID
LEFT JOIN TP_MST_GOODSTYPE GT
ON GT.GOODSTYPEID = GOODS.GOODSTYPEID
WHERE GLD.VALUEFLAG = '1'
AND GLL.VALUEFLAG = '1'
AND GLL.GMOULDSTATUS = 1
-- AND GLD.GMOULDSTATUS = 1
-- AND (GOODS.GOODSMODEL = @GOODSMODEL@ OR @GOODSMODEL@ IS NULL)
GROUP BY GLL.GROUTINGLINEID
,GOODS.GOODSMODEL
,SUBSTR(GT.GOODSTYPECODE, 1, 6)) GL2
ON GL2.GROUTINGLINEID = NVL(G.GROUTINGLINEID, P.GROUTINGLINEID)
AND GL2.GOODSMODEL = NVL(G.GOODSMODEL, P.GOODSMODEL)
AND GL2.GOODSTYPECODE2 = NVL(G.GOODSTYPECODE2, P.GOODSTYPECODE2)
INNER JOIN TP_PC_GROUTINGLINE GL
ON GL.GROUTINGLINEID =
COALESCE(G.GROUTINGLINEID
,P.GROUTINGLINEID
,GL2.GROUTINGLINEID)
LEFT JOIN TP_MST_USER GU
ON (GU.USERID = P.USERID OR GU.USERID = G.USERID)
LEFT JOIN TP_MST_USER MU
ON MU.USERID = GL.MONITORID
-- WHERE (GL.BUILDINGNO = @BUILDINGNO@ OR @BUILDINGNO@ IS NULL)
-- AND (MU.USERNAME = @USERNAME@ OR @USERNAME@ IS NULL)
ORDER BY MU.USERNAME
,GL.GROUTINGLINENAME
,COALESCE(G.GOODSMODEL, P.GOODSMODEL, GL2.GOODSMODEL)
,NVL(G.USERCODE, P.USERCODE)) PT
GROUP BY GROUPING SETS((PT.M_USERNAME, PT.LINE_NO,PT.GROUTINGLINEID,PT.GL_MOULDQUANTITY, PT.GOODS_CODE, PT.G_USERCODE, PT.G_USERNAME, PT.HIGHPRESSUREFLAG, PT.GOODSTYPECODE2),(PT.M_USERNAME, PT.LINE_NO, PT.HIGHPRESSUREFLAG),(PT.M_USERNAME))
ORDER BY PT.M_USERNAME, PT.LINE_NO, PT.G_USERCODE, PT.GOODS_CODE) TT)";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", year));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
int days = (dayEnd.Date.AddSeconds(1) - dayBegin.Date).Days + 1;
days -= DayOfWeeksInDays(dayBegin, days, DayOfWeek.Sunday);
sqlPara.Add(new CDAParameter("DAYS", days));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
//}
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export021模具使用表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export021模具使用表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export021模具使用表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export022()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete AJZ_RPT022 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @" INSERT INTO AJZ_RPT022
SELECT * FROM (SELECT
PC.工号 AS 工号1 ,
PC.姓名 AS 姓名1,
NVL(PC.产品编码,PD.产品编码) AS 产品编码1,
PC.出窑数,
PC.出窑数 - NVL( PD.合计, 0 ) AS 合格数,
--ROUND( (PC.出窑数 - NVL( PD.合计, 0 )) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ), 4 ) * 100 AS 合格率,
TO_CHAR(100 - ROUND( (PC.出窑数 - NVL( PD.合计, 0 )) / DECODE( PC.出窑数, 0, 1, PC.出窑数 ), 4 ) * 100) || '%' AS 缺陷率,
PD.* ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
*
FROM
(
SELECT
--GID,
DECODE( GID, 6, USERCODE || '合计', 7, USERCODE || '合计', USERCODE ) AS 工号,
USERNAME AS 姓名,
GOODSCODE AS 产品编码,
DECODE( GID, 1, '合计', 3, '合计', 7, '合计', DEFECT ) AS DEFECT,
CNUM
FROM
(
SELECT
GROUPING_ID ( U.USERCODE, P.GOODSCODE, D.DEFECTID ) AS GID,
U.USERCODE,
U.USERNAME,
P.GOODSCODE,
D.DEFECTID,
M.DEFECTNAME AS DEFECT,
COUNT( * ) AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
--LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID
INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
LEFT JOIN TP_MST_DEFECTTYPE T ON T.DEFECTTYPEID = M.DEFECTTYPEID
INNER JOIN TP_PM_PRODUCTIONDATA PB ON P.BARCODE = PB.BARCODE
INNER JOIN TP_MST_USER U ON U.USERID = PB.USERID
WHERE
P.VALUEFLAG = '1' AND P.CHECKBATCHNO = 1
AND P.PROCEDUREID = 13
AND P.GOODSLEVELTYPEID <> 4
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
AND P.ISREFIRE = '0'
--AND L.BUILDINGNO = @BUILDINGNO@
AND ( PB.PROCEDUREID = 1 )
AND (D.DEFECTPROCEDUREID IN (2,25))
AND (P.GOODSCODE = NULL OR NULL IS NULL)
AND (U.USERCODE = '' OR '' IS NULL)
GROUP BY
GROUPING SETS (
( U.USERCODE, U.USERNAME, P.GOODSCODE, D.DEFECTID, M.DEFECTNAME ),
( U.USERCODE, U.USERNAME, P.GOODSCODE ),
( D.DEFECTID, M.DEFECTNAME ),
( )
)
ORDER BY
USERCODE,
GROUPING_ID ( U.USERCODE, P.GOODSCODE, D.DEFECTID )
)
) PIVOT (
SUM( CNUM ) FOR DEFECT IN ( '糙活' AS 糙活,'成裂' AS 成裂,'成脏' AS 成脏,'成走' AS 成走,'孔不良' AS 孔不良,'泥绺' AS 泥绺,'坯脏' AS 坯脏,'注泡' AS 注泡,'棕眼' AS 棕眼,'漏气' AS 漏气,'卡球' AS 卡球,'炸圈' AS 炸圈,'排水不良' AS 排水不良, '合计' AS 合计 )
)
ORDER BY
工号, 产品编码
) PD
RIGHT JOIN (
SELECT
GID,
DECODE(GID,3,'合计',工号) AS 工号,
T.姓名,
T.产品编码,
T.出窑数
FROM
(
SELECT
GROUPING_ID ( U.USERCODE, P.GOODSCODE ) AS GID,
U.USERCODE AS 工号,
U.USERNAME AS 姓名,
P.GOODSCODE AS 产品编码,
COUNT( * ) AS 出窑数
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_GROUTINGDAILY G ON G.GROUTINGDAILYID = P.GROUTINGDAILYID
--LEFT JOIN TP_MST_USER MU ON MU.USERID = L.MONITORID
INNER JOIN TP_PM_PRODUCTIONDATA PB ON P.BARCODE = PB.BARCODE
INNER JOIN TP_MST_USER U ON U.USERID = PB.USERID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13 AND P.CHECKBATCHNO = 1
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
--AND L.BUILDINGNO = @BUILDINGNO@
AND ( PB.PROCEDUREID = 1 )
AND P.ISREFIRE = '0'
AND PB.VALUEFLAG='1'
AND (P.GOODSCODE = NULL OR NULL IS NULL)
AND (U.USERCODE = '' OR '' IS NULL)
GROUP BY
GROUPING SETS (
( U.USERCODE, U.USERNAME, P.GOODSCODE ),()
)
) T
ORDER BY
工号, 产品编码
) PC ON (PC.GID = 3 AND PD.工号 = PC.工号 AND PD.产品编码 IS NULL ) OR ( PD.工号 = PC.工号 AND PD.产品编码 = PC.产品编码 )) A WHERE A.姓名1 IS NOT NULL
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export022修干坯缺陷统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export022修干坯缺陷统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export022修干坯缺陷统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export024()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete AJZ_RPT024 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @" INSERT INTO AJZ_RPT024
-- SELECT * FROM (
SELECT
NVL(PN.日期,PN2.日期) AS 日期,
NVL(PN.楼号,PN2.楼号) AS 楼号,
DECODE(PN.工序,13,'本烧',35,'重烧','') AS 工序,
NVL(PN.车数,0) AS 车数,
NVL(PN.出窑数量,0) AS 出窑数量,
NVL((PN.合格数量 + PN2.回收合格),0) AS 合格数量,
NVL(ROUND(( PN.合格数量 + PN2.回收合格)/DECODE(PN.出窑数量,0,1,PN.出窑数量)*100,2),0)||'%' AS 合格率,
NVL(ROUND(PN.总产值/DECODE(PN.车数,0,1,PN.车数),2),0) AS 单车产值,
NVL(PN.双A数量,0) AS 双A数量,
NVL(PN.出窑数量 - (PN.合格数量 + PN2.回收合格),0) AS 废品数量,
NVL(ROUND((PN.座便_合格数量+PN2.座便_回收合格)/DECODE(PN.合格数量+PN2.回收合格,0,1,DECODE(PN.合格数量,0,1,PN.合格数量)),2),0) AS 座便比例,
NVL(PN.连体_出窑数量,0) AS 连体_出窑数量,
NVL(PN.连体_合格数量 + PN2.连体_回收合格,0) AS 连体_回收合格,
NVL(ROUND((PN.连体_合格数量 + PN2.连体_回收合格)/DECODE(PN.连体_出窑数量,0,1,PN.连体_出窑数量)*100,2),0)||'%' AS 连体_合格率,
NVL(PN.座便_出窑数量,0) AS 座便_出窑数量,
NVL(PN.座便_合格数量 + PN2.座便_回收合格,0) AS 座便_合格数量,
NVL(ROUND((PN.座便_合格数量+PN2.座便_回收合格)/DECODE(PN.座便_出窑数量,0,1,PN.座便_出窑数量)*100,2),0)||'%' AS 座便_合格率,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0')),
NVL(PN.总产值,0) AS 总产值,
NVL(ROUND(PN.总产值/DECODE(PN.合格数量+PN2.回收合格,0,1,PN.合格数量+PN2.回收合格),2),0) AS 平均单价
FROM
(
SELECT
DECODE( GROUPING_ID ( C.CDATE, C.BUILDINGNO ), 0, TO_CHAR( C.CDATE, 'YYYY-MM-DD' ), '合计' ) AS 日期,
DECODE( GROUPING_ID ( C.CDATE, C.BUILDINGNO ), 0, C.BUILDINGNO, '--' ) AS 楼号,
NVL(C.PROCEDUREID,0) AS 工序,
COUNT(DISTINCT C.KILNCARBATCHNO) AS 车数,
SUM( CASE WHEN C.PROCEDUREID IN ( 13,35 ) THEN C.CNUM ELSE 0 END ) AS 出窑数量,
SUM( CASE WHEN C.PROCEDUREID IN ( 13,35 ) AND C.GOODSLEVELTYPEID IN ( 4, 5 ) AND C.P2 IS NULL THEN C.CNUM ELSE 0 END ) AS 合格数量,
SUM( CASE WHEN C.PROCEDUREID IN ( 13,35 ) AND C.GOODSLEVELTYPEID IN ( 5 ) AND C.P2 IS NOT NULL THEN C.CNUM ELSE 0 END ) AS 双A数量,
SUM(C.UNITPRICE) AS 总产值,
SUM( CASE WHEN C.PROCEDUREID IN ( 13,35 ) AND C.GOODSTYPEID = 6 THEN C.CNUM ELSE 0 END ) AS 连体_出窑数量,
SUM( CASE WHEN C.PROCEDUREID IN ( 13,35 ) AND C.GOODSTYPEID = 6 AND C.GOODSLEVELTYPEID IN ( 4, 5 ) AND C.P2 IS NULL THEN C.CNUM ELSE 0 END ) AS 连体_合格数量,
SUM( CASE WHEN C.PROCEDUREID IN ( 13,35 ) AND C.GOODSTYPEID = 5 THEN C.CNUM ELSE 0 END ) AS 座便_出窑数量,
SUM( CASE WHEN C.PROCEDUREID IN ( 13,35 ) AND C.GOODSTYPEID = 5 AND C.GOODSLEVELTYPEID IN ( 4, 5 ) AND C.P2 IS NULL THEN C.CNUM ELSE 0 END ) AS 座便_合格数量
FROM
(
SELECT
T.CDATE,
T.GROUTINGLINEID,
T.PROCEDUREID,
T.GOODSLEVELTYPEID,
T.PRODUCTIONDATAID,
T.MAXPRODUCTIONDATAID,
T.CNUM,
L.BUILDINGNO,
P2.PROCEDUREID P2,
G.UNITPRICE,
G.GOODSTYPEID,
T.KILNCARID,
T.KILNCARBATCHNO
FROM
(
SELECT
TRUNC( P.CHECKTIME ) AS CDATE,
P.GROUTINGLINEID,
P.PROCEDUREID,
P.GOODSLEVELTYPEID,
P.PRODUCTIONDATAID,
MAX( PMAX.PRODUCTIONDATAID ) MAXPRODUCTIONDATAID,
P.GOODSID,
P.KILNCARID,
P.KILNCARBATCHNO,
1 AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = P.GROUTINGDAILYDETAILID AND PMAX.PRODUCTIONDATAID < P.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'
WHERE
P.VALUEFLAG = '1' AND P.CHECKBATCHNO = 1
AND P.PROCEDUREID IN ( 13,35 )
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME <= @DATEEND@
GROUP BY
P.CHECKTIME,
P.GROUTINGLINEID,
P.PROCEDUREID,
P.GOODSLEVELTYPEID,
P.PRODUCTIONDATAID,
P.GOODSID,
P.KILNCARID,
P.KILNCARBATCHNO
) T
LEFT JOIN TP_PC_GROUTINGLINE L ON T.GROUTINGLINEID = L.GROUTINGLINEID
LEFT JOIN TP_PM_PRODUCTIONDATA P2 ON ( P2.PRODUCTIONDATAID = T.MAXPRODUCTIONDATAID AND P2.PROCEDUREID IN ( 22, 23 ) )
LEFT JOIN TP_MST_GOODS G ON T.GOODSID = G.GOODSID
LEFT JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
WHERE
( L.BUILDINGNO = '' OR '' IS NULL)
) C
GROUP BY
GROUPING SETS ( ( C.CDATE, C.BUILDINGNO, C.PROCEDUREID ), ( ) )
) PN
FULL JOIN
(
SELECT
DECODE( GROUPING_ID ( C.CDATE, C.BUILDINGNO ), 0, TO_CHAR( C.CDATE, 'YYYY-MM-DD' ), '合计' ) AS 日期,
DECODE( GROUPING_ID ( C.CDATE, C.BUILDINGNO ), 0, C.BUILDINGNO, '--' ) AS 楼号,
NVL(C.PROCEDUREID,0) AS 工序,
SUM( CASE WHEN C.PROCEDUREID IN (13,35) AND C.GOODSLEVELTYPEID IN (4, 5) AND C.P2 IN (22,23) THEN C.CNUM ELSE 0 END) AS 回收合格,
SUM( CASE WHEN C.PROCEDUREID IN (13,35) AND C.GOODSTYPEID = 6 AND C.GOODSLEVELTYPEID IN ( 4, 5 ) AND C.P2 IN(22,23) THEN C.CNUM ELSE 0 END ) AS 连体_回收合格,
SUM( CASE WHEN C.PROCEDUREID IN (13,35) AND C.GOODSTYPEID = 5 AND C.GOODSLEVELTYPEID IN ( 4, 5 ) AND C.P2 IN(22,23) THEN C.CNUM ELSE 0 END ) AS 座便_回收合格
FROM
(
SELECT
T.CDATE,
T.GROUTINGLINEID,
T.PROCEDUREID,
T.GOODSLEVELTYPEID,
T.PRODUCTIONDATAID,
T.MAXPRODUCTIONDATAID,
T.CNUM,
L.BUILDINGNO,
P2.PROCEDUREID P2,
G.UNITPRICE,
G.GOODSTYPEID,
T.KILNCARID,
T.KILNCARBATCHNO
FROM
(
SELECT
TRUNC( P.CREATETIME ) AS CDATE,
P.GROUTINGLINEID,
P.PROCEDUREID,
P.GOODSLEVELTYPEID,
P.PRODUCTIONDATAID,
MAX( PMAX.PRODUCTIONDATAID ) MAXPRODUCTIONDATAID,
P.GOODSID,
P.KILNCARID,
P.KILNCARBATCHNO,
1 AS CNUM
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = P.GROUTINGDAILYDETAILID AND PMAX.PRODUCTIONDATAID < P.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'
WHERE
P.VALUEFLAG = '1' AND P.CHECKBATCHNO = 1
AND P.PROCEDUREID IN ( 13,35 )
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
P.CREATETIME,
P.GROUTINGLINEID,
P.PROCEDUREID,
P.GOODSLEVELTYPEID,
P.PRODUCTIONDATAID,
P.GOODSID,
P.KILNCARID,
P.KILNCARBATCHNO
) T
LEFT JOIN TP_PC_GROUTINGLINE L ON T.GROUTINGLINEID = L.GROUTINGLINEID
LEFT JOIN TP_PM_PRODUCTIONDATA P2 ON ( P2.PRODUCTIONDATAID = T.MAXPRODUCTIONDATAID AND P2.PROCEDUREID IN ( 22, 23 ) )
LEFT JOIN TP_MST_GOODS G ON T.GOODSID = G.GOODSID
LEFT JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
WHERE
( L.BUILDINGNO = '' OR '' IS NULL)
) C
GROUP BY
GROUPING SETS ( ( C.CDATE, C.BUILDINGNO, C.PROCEDUREID ), ( ) )
) PN2
ON PN.日期 = PN2.日期 AND PN.楼号 = PN2.楼号 AND PN.工序 = PN2.工序
ORDER BY
日期 ASC
-- ) A WHERE A.工序 IS NOT NULL)
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export024生产进度表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export024生产进度表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export024生产进度表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export025()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string sqlStr = @"delete JZ_RPT025 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
string sqlStr1 = @"
insert INTO JZ_RPT025
SELECT
MU.USERNAME 组别,
GL.GROUTINGLINENAME 线号,
LISTAGG ( TO_CHAR( GP.GOODSMODEL ), '/' ) WITHIN GROUP ( ORDER BY GP.GOODSMODEL ) 产品型号,
LISTAGG ( TO_CHAR( GU.USERCODE ), '/' ) WITHIN GROUP ( ORDER BY GU.USERCODE ) 成型工号,
LISTAGG ( TO_CHAR( GU.USERNAME ), '/' ) WITHIN GROUP ( ORDER BY GU.USERCODE ) 姓名,
MAX( GP.MG_COUNT ) 注浆次数 ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
T.GROUTINGLINEID,
G.GOODSMODEL,
GDD.USERID,
MAX( GLD.GROUTINGCOUNT ) MG_COUNT
FROM
TP_PC_GMOULDRECORD T
LEFT JOIN TP_PC_GROUTINGLINEDETAIL GLD ON ( T.GMOULDRECORDTYPE = 6 AND GLD.LASTGMOULDRECORDID = T.GMOULDRECORDID )
OR ( T.GMOULDRECORDTYPE <> 6 AND T.GROUTINGLINEDETAILID = GLD.GROUTINGLINEDETAILID )
LEFT JOIN TP_MST_GOODS G1 ON G1.GOODSID = T.GOODSID
LEFT JOIN TP_MST_GOODS G2 ON G2.GOODSID = T.CHANGEDGOODSID
INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGLINEDETAILID = GLD.GROUTINGLINEDETAILID
AND GDD.GROUTINGCOUNT = GLD.GROUTINGCOUNT
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = GLD.GOODSID
WHERE
T.CREATETIME >= @DATEBEGIN@
AND T.CREATETIME <= @DATEEND@
AND GLD.GROUTINGCOUNT > 0
AND T.GMOULDRECORDTYPE IN ( 3, 5, 6, 7 )
AND ( T.GMOULDRECORDTYPE <> 5 OR ( G1.GOODSMODEL <> G2.GOODSMODEL ) )
GROUP BY
T.GROUTINGLINEID,
G.GOODSMODEL,
GDD.USERID
) GP
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = GP.GROUTINGLINEID
LEFT JOIN TP_MST_USER MU ON MU.USERID = GL.MONITORID
--INNER JOIN TP_MST_GOODS G ON G.GOODSID = GP.GOODSID
LEFT JOIN TP_MST_USER GU ON GU.USERID = GP.USERID
WHERE GP.MG_COUNT >= 70
GROUP BY
MU.USERNAME,
GL.GROUTINGLINENAME
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export025历史注浆次数表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export025历史注浆次数表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export025历史注浆次数表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export027()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-8-2 陈强
string sqlStrc = @"delete JZ_RPT027 where FORWARDTIME = @c@ ";
string sqlStra = @" delete JZ_RPT027_D where FORWARDTIME = @a@ ";
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string mouth = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string year = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(year + m.ToString().PadLeft(2, '0'));
conn.ExecuteNonQuery(sqlStrc, new CDAParameter("c", c));
conn.ExecuteNonQuery(sqlStra, new CDAParameter("a", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(year + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
//总单
String sqlStr1 = @" INSERT INTO JZ_RPT027 SELECT * FROM (" +
"SELECT to_char(@DATEOUT@, 'yyyy-mm-dd') AS \"审核日期\"\n" +
" ,to_char(@DATEOUT@, 'yyyy-mm-dd') AS \"日期\"\n" +
" ,to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))" +
" ,'张迪' AS \"制单人_FName\"\n" +
" ,'' AS \"编 号\"\n" +
" ,'张迪' AS \"审核人_FName\"\n" +
" ,CASE\n" +
" WHEN SUM(T.DNUM) < 0 THEN\n" +
" '1'\n" +
" ELSE\n" +
" '0'\n" +
" END AS \"红蓝字\"\n" +
" ,'' AS \"单据号\"\n" +
" ,T.FNAME_CODE AS \"领料部门_FNumber\"\n" +
" ,T.FNAME AS \"领料部门_FName\"\n" +
" ,'' AS \"用途\"\n" +
" ,'01.094' AS \"领料_FNumber\"\n" +
" ,'张迪' AS \"领料_FName\"\n" +
" ,'01.094' AS \"发货_FNumber\"\n" +
" ,'张迪' AS \"发货_FName\"\n" +
" ,'01.001' AS \"客户_FNumber\"\n" +
" ,'唐山中陶实业有限公司' AS \"客户_FName\"\n" +
" ,'' AS \"出库类型_FNumber\"\n" +
" ,'0'" +
" FROM (\n" +
" SELECT -1 AS DNUM\n" +
" ,CASE\n" +
" WHEN TS.PROCEDUREID IN (26, 27, 38) THEN\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN (3, 39) THEN\n" +
//" '精坯库(二期)'\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '釉坯库(二期)'\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 31 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '窑坯(一期)'\n" +
" WHEN TS.PROCEDUREID = 21 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '窑坯(二期)'\n" +
" '窑坯(一期)'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME_FLAG\n" +
" ,CASE\n" +
" WHEN TS.PROCEDUREID IN (26, 27, 38) THEN\n" +
" '009'\n" +
" WHEN TS.PROCEDUREID IN (3, 39) THEN\n" +
//" '035'\n" +
" '009'\n" +
" WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN\n" +
" '010'\n" +
" WHEN TS.PROCEDUREID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '039'\n" +
" '010'\n" +
" WHEN TS.PROCEDUREID = 31 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '011'\n" +
" WHEN TS.PROCEDUREID = 21 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '038'\n" +
" '011'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME_CODE\n" +
" ,CASE\n" +
" WHEN TS.PROCEDUREID IN (26, 27, 38) THEN\n" +
" '一期成型车间'\n" +
" WHEN TS.PROCEDUREID IN (3, 39) THEN\n" +
//" '二期成型车间'\n" +
" '一期成型车间'\n" +
" WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN\n" +
" '一期施釉车间'\n" +
" WHEN TS.PROCEDUREID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '二期施釉车间'\n" +
" '一期施釉车间'\n" +
" WHEN TS.PROCEDUREID = 31 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '一期烧成车间'\n" +
" WHEN TS.PROCEDUREID = 21 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '二期烧成车间'\n" +
" '一期烧成车间'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME\n" +
" FROM TP_PM_SCRAPPRODUCT TS\n" +
" INNER JOIN TP_PM_PRODUCTIONDATA PD\n" +
" ON TS.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
" WHERE TS.AUDITSTATUS = 1\n" +
" AND TS.GOODSLEVELTYPEID = 8\n" +
" AND TS.BACKOUTTIME >= @DATEBEGIN@\n" +
" AND TS.BACKOUTTIME < @DATEEND@\n" +
" AND TS.PROCEDUREID IN (3\n" +
" ,26\n" +
" ,27\n" +
" ,38\n" +
" ,39\n" +
" ,28\n" +
" ,29\n" +
" ,30\n" +
" ,32\n" +
" ,33\n" +
" ,24\n" +
" ,4,5\n" +
" ,6\n" +
" ,10\n" +
" ,16, 34\n" +
" ,21\n" +
" ,31\n" +
//" ,9)) T\n" +
" ,9)\n" +
" UNION ALL\n" + // 产品清除
" SELECT -1 AS DNUM\n" +
" ,CASE\n" +
" WHEN TS.OTHERID IN (26, 27, 38) THEN\n" +
" '精坯库(一期)'\n" +
" WHEN TS.OTHERID IN (3, 39) THEN\n" +
//" '精坯库(二期)'\n" +
" '精坯库(一期)'\n" +
" WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.OTHERID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '釉坯库(二期)'\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.OTHERID = 31 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '窑坯(一期)'\n" +
" WHEN TS.OTHERID = 21 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '窑坯(二期)'\n" +
" '窑坯(一期)'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME_FLAG\n" +
" ,CASE\n" +
" WHEN TS.OTHERID IN (26, 27, 38) THEN\n" +
" '009'\n" +
" WHEN TS.OTHERID IN (3, 39) THEN\n" +
//" '035'\n" +
" '009'\n" +
" WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN\n" +
" '010'\n" +
" WHEN TS.OTHERID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '039'\n" +
" '010'\n" +
" WHEN TS.OTHERID = 31 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '011'\n" +
" WHEN TS.OTHERID = 21 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '038'\n" +
" '011'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME_CODE\n" +
" ,CASE\n" +
" WHEN TS.OTHERID IN (26, 27, 38) THEN\n" +
" '一期成型车间'\n" +
" WHEN TS.OTHERID IN (3, 39) THEN\n" +
//" '二期成型车间'\n" +
" '一期成型车间'\n" +
" WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN\n" +
" '一期施釉车间'\n" +
" WHEN TS.OTHERID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '二期施釉车间'\n" +
" '一期施釉车间'\n" +
" WHEN TS.OTHERID = 31 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '一期烧成车间'\n" +
" WHEN TS.OTHERID = 21 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '二期烧成车间'\n" +
" '一期烧成车间'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME\n" +
" FROM TP_PM_GOODSCHANGEHISTORY TS\n" +
" LEFT JOIN TP_PM_PRODUCTIONDATA PD\n" +
" ON TS.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID AND TS.OTHERID = 9 AND PD.PROCEDUREID=9\n" +
" WHERE TS.DATATYPE = 12\n" +
" AND TS.CREATETIME >= @DATEBEGIN@\n" +
" AND TS.CREATETIME < @DATEEND@\n" +
" AND TS.OTHERID IN (3\n" +
" ,26\n" +
" ,27\n" +
" ,38\n" +
" ,39\n" +
" ,28\n" +
" ,29\n" +
" ,30\n" +
" ,32\n" +
" ,33\n" +
" ,24\n" +
" ,4,5\n" +
" ,6\n" +
" ,10\n" +
" ,16, 34\n" +
" ,21\n" +
" ,31\n" +
" ,9)) T\n" +
// " WHERE (@FNAME_FLAG@ IS NULL OR T.FNAME_FLAG = @FNAME_FLAG@) \n" +
" GROUP BY T.FNAME_CODE, T.FNAME, T.FNAME_FLAG\n" +
" )";
List sqlPara1 = new List();
sqlPara1.Add(new CDAParameter("DATEOUT", dayEnd.AddDays(-1)));
sqlPara1.Add(new CDAParameter("I", i));
sqlPara1.Add(new CDAParameter("YEAR", year));
sqlPara1.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara1.Add(new CDAParameter("DATEBEGIN", dayBegin));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara1.ToArray());
//明细
string sqlStr2 = @"
INSERT INTO JZ_RPT027_D SELECT * FROM (" +
"SELECT '' AS 行号\n" +
" ,'' AS \"单据号_FBillno\"\n" +
" ,'' AS \"单据号_FTrantype\"\n" +
" ,K.K_CODE AS \"产品代码_FNumber\"\n" +
" ,T.GOODS_CODE AS \"产品代码_FName\"\n" +
" ,'' AS \"产品代码_FModel\"\n" +
" ,'' AS \"辅助属性_FNumber\"\n" +
" ,'' AS \"辅助属性_FName\"\n" +
" ,'*' AS \"辅助属性_FClassName\"\n" +
" ,'件' AS \"单位_FNumber\"\n" +
" ,'件' AS \"单位_FName\"\n" +
" ,0 AS \"单价\"\n" +
" ,SUM(T.DNUM) AS \"数量\"\n" +
" ,0 AS \"金额\"\n" +
" ,'破损' AS \"备注\"\n" +
" ,SUM(T.DNUM) AS \"基本单位数量\"\n" +
" ,'' AS \"生产_采购日期\"\n" +
" ,'' AS \"发货仓库_FNumber\"\n" +
" ,T.FNAME AS \"发货仓库_FName\"\n" +
" ,'' AS \"仓位_FName\"\n" +
" ,'' AS \"仓位_FGroupName\"\n" +
" ,to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))" +
" ,'0'" +
" FROM (\n" +
" SELECT CASE\n" +
" WHEN TS.PROCEDUREID IN (3, 26, 27, 38, 39) THEN\n" +
" 'J'\n" +
" WHEN TS.PROCEDUREID IN (21, 31, 9) THEN\n" +
" 'S'\n" +
" ELSE\n" +
" 'Y'\n" +
" END || G.GOODSMODEL AS GOODS_CODE\n" +
" ,-1 AS DNUM\n" +
" ,CASE\n" +
" WHEN TS.PROCEDUREID IN (26, 27, 38) THEN\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN (3, 39) THEN\n" +
//" '精坯库(二期)'\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN (28, 29, 30, 32, 33) THEN\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '釉坯库(二期)'\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 31 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '窑坯(一期)'\n" +
" WHEN TS.PROCEDUREID = 21 OR\n" +
" (TS.PROCEDUREID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '窑坯(二期)'\n" +
" '窑坯(一期)'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME\n" +
" FROM TP_PM_SCRAPPRODUCT TS\n" +
" INNER JOIN TP_MST_GOODS G\n" +
" ON TS.GOODSID = G.GOODSID\n" +
" INNER JOIN TP_PM_PRODUCTIONDATA PD\n" +
" ON TS.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
" WHERE TS.AUDITSTATUS = 1\n" +
" AND TS.GOODSLEVELTYPEID = 8\n" +
" AND TS.BACKOUTTIME >= @DATEBEGIN@\n" +
" AND TS.BACKOUTTIME < @DATEEND@\n" +
" AND TS.PROCEDUREID IN (3\n" +
" ,26\n" +
" ,27\n" +
" ,38\n" +
" ,39\n" +
" ,28\n" +
" ,29\n" +
" ,30\n" +
" ,32\n" +
" ,33\n" +
" ,24\n" +
" ,4,5\n" +
" ,6\n" +
" ,10\n" +
" ,16, 34\n" +
" ,21\n" +
" ,31\n" +
" ,9)\n" +
" UNION ALL\n" + // 产品清除
" SELECT CASE\n" +
" WHEN TS.OTHERID IN (3, 26, 27, 38, 39) THEN\n" +
" 'J'\n" +
" WHEN TS.OTHERID IN (21, 31, 9) THEN\n" +
" 'S'\n" +
" ELSE\n" +
" 'Y'\n" +
" END || G.GOODSMODEL AS GOODS_CODE\n" +
" ,-1 AS DNUM\n" +
" ,CASE\n" +
" WHEN TS.OTHERID IN (26, 27, 38) THEN\n" +
" '精坯库(一期)'\n" +
" WHEN TS.OTHERID IN (3, 39) THEN\n" +
//" '精坯库(二期)'\n" +
" '精坯库(一期)'\n" +
" WHEN TS.OTHERID IN (28, 29, 30, 32, 33) THEN\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.OTHERID IN (24, 4,5, 6, 10, 16, 34) THEN\n" +
//" '釉坯库(二期)'\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.OTHERID = 31 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (1, 2)) THEN\n" +
" '窑坯(一期)'\n" +
" WHEN TS.OTHERID = 21 OR\n" +
" (TS.OTHERID = 9 AND PD.KILNID IN (3, 4)) THEN\n" +
//" '窑坯(二期)'\n" +
" '窑坯(一期)'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME\n" +
" FROM TP_PM_GOODSCHANGEHISTORY TS\n" +
" INNER JOIN TP_MST_GOODS G\n" +
" ON TS.GOODSID = G.GOODSID\n" +
" LEFT JOIN TP_PM_PRODUCTIONDATA PD\n" +
" ON TS.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID AND TS.OTHERID = 9 AND PD.PROCEDUREID=9\n" +
" WHERE TS.DATATYPE = 12\n" +
" AND TS.CREATETIME >= @DATEBEGIN@\n" +
" AND TS.CREATETIME < @DATEEND@\n" +
" AND TS.OTHERID IN (3\n" +
" ,26\n" +
" ,27\n" +
" ,38\n" +
" ,39\n" +
" ,28\n" +
" ,29\n" +
" ,30\n" +
" ,32\n" +
" ,33\n" +
" ,24\n" +
" ,4,5\n" +
" ,6\n" +
" ,10\n" +
" ,16, 34\n" +
" ,21\n" +
" ,31\n" +
" ,9)" +
" ) T\n" +
" LEFT JOIN TA_IMEX_kingdee_Goodscode K ON T.GOODS_CODE = K.K_NAME AND T.FNAME = K.K_WAREHOUSE\n" +
// " WHERE (@FNAME_FLAG@ IS NULL OR T.FNAME = @FNAME_FLAG@) \n" +
" GROUP BY K.K_CODE, T.GOODS_CODE, T.FNAME\n" +
" )";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", year));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result += conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export027其他出库退单结转成功!");
}
else
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export027其他出库退单结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export027其他出库退单结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export028()
{
using (IDataAccess conn = DataAccess.Create())
{
//2021-08-2 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + m.ToString().PadLeft(2, '0'));
string dayOut = b + "-" + a + "-" + DateTime.DaysInMonth(Convert.ToInt32(b), m).ToString();
conn.Open();
conn.BeginTransaction();
try
{
String sqlStr = @"delete JZ_RPT028_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
String Str = @"delete JZ_RPT028_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
String sqlStr2 = @"INSERT INTO JZ_RPT028_D " +
"SELECT * FROM ( SELECT '' AS 序列号内码\n" +
" ,'' AS 行号\n" +
" ,'' AS \"单据号_FBillno\"\n" +
" ,'' AS \"单据号_FTrantype\"\n" +
" ,K.K_CODE AS \"物料代码_FNumber\"\n" +
" ,T.GOODS_CODE AS \"物料代码_FName\"\n" +
" ,'' AS \"物料代码_FModel\"\n" +
" ,'' AS \"辅助属性_FNumber\"\n" +
" ,'' AS \"辅助属性_FName\"\n" +
" ,'*' AS \"辅助属性_FClassName\"\n" +
" ,K2.K_CODE AS \"成本对象_FNumber\"\n" +
//" ,decode(T.P_CODE,'J','Y','Y','S') || T.GOODS_CODE AS \"成本对象_FName\"\n" +
" ,T.GOODS_CODE2 AS \"成本对象_FName\"\n" +
" ,'' AS \"成本对象_FItemClassID\"\n" +
" ,'*' AS \"成本对象组_FNumber\"\n" +
" ,'*' AS \"成本对象组_FName\"\n" +
" ,'0' AS \"成本对象组_FItemClassID\"\n" +
" ,'件' AS \"单位_FNumber\"\n" +
" ,'件' AS \"单位_FName\"\n" +
" ,0 AS \"单价\"\n" +
" ,'' AS \"批号\"\n" +
" ,0 AS \"金额\"\n" +
" ,0 AS \"客户BOM\"\n" +
" ,SUM(T.DNUM) AS \"实发数量\"\n" +
" ,'' AS \"备注\"\n" +
" ,SUM(T.DNUM) AS \"基本单位实发数量\"\n" +
" ,0 AS \" 保质期(天)\"\n" +
" ,'' AS \"有效期至\"\n" +
" ,'' AS \"发料仓库_FNumber\"\n" +
" ,T.FNAME AS \"发料仓库_FName\"\n" +
" ,NULL AS \"仓位_FName\"\n" +
" ,NULL AS \"仓位_FGroupName\"\n" +
" ,0 AS \"辅助数量\"\n" +
",to_number(@YEAR@|| lpad(to_char(@I@),2,'0'))\n" +
" FROM (SELECT CASE\n" +
" WHEN TS.PROCEDUREID IN (28, 24,34) THEN\n" +
" 'J'\n" +
" WHEN TS.PROCEDUREID IN (13) THEN\n" +
" 'S'\n" +
" ELSE\n" +
" 'Y'\n" +
" END || G.GOODSMODEL AS GOODS_CODE\n" +
" ,CASE\n" +
" WHEN TS.PROCEDUREID IN (28, 24,34) THEN\n" +
" 'Y'\n" +
" WHEN TS.PROCEDUREID IN (13) THEN\n" +
" ''\n" +
" ELSE\n" +
" 'S'\n" +
" END || G.GOODSMODEL AS GOODS_CODE2\n" +
" ,-1 AS DNUM\n" +
" ,CASE\n" +
" WHEN TS.PROCEDUREID = 28 THEN\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID IN( 24,34) THEN\n" +
//" '精坯库(二期)'\n" +
" '精坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 31 THEN\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 21 THEN\n" +
//" '釉坯库(二期)'\n" +
" '釉坯库(一期)'\n" +
" WHEN TS.PROCEDUREID = 13 AND\n" +
" TS.Kilnid IN (1, 2) THEN\n" +
" '窑坯(一期)'\n" +
" WHEN TS.PROCEDUREID = 13 AND\n" +
" TS.Kilnid IN (3, 4) THEN\n" +
//" '窑坯(二期)'\n" +
" '窑坯(一期)'\n" +
" ELSE\n" +
" NULL\n" +
" END FNAME\n" +
" FROM TP_PM_PRODUCTIONDATA TS\n" +
" INNER JOIN TP_MST_GOODS G\n" +
" ON TS.GOODSID = G.GOODSID\n" +
" WHERE TS.BACKOUTTIME >= @DATEBEGIN@\n" +
" AND TS.BACKOUTTIME < @DATEEND@\n" +
" AND TS.PROCEDUREID IN (28, 24,34, 21, 31)) T\n" + //13 质量登记不能撤销
" LEFT JOIN TA_IMEX_kingdee_Goodscode K ON T.GOODS_CODE = K.K_NAME AND T.FNAME = K.K_WAREHOUSE\n" +
" LEFT JOIN TA_IMEX_kingdee_Goodscode K2 ON K2.K_NAME = T.GOODS_CODE2 AND K2.buildingno = K.buildingno\n" +
// " WHERE (@FNAME_FLAG@ IS NULL OR T.FNAME = @FNAME_FLAG@) \n" +
" GROUP BY K.K_CODE, K2.K_CODE, T.GOODS_CODE,T.GOODS_CODE2, T.FNAME\n" +
" )";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 += conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
}
conn.Commit();
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export028生产领料退单结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
if (result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export028生产领料退单结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export028生产领料退单结转0条!");
}
}
}
public static void export029()
{
using (IDataAccess conn = DataAccess.Create())
{
//2021-08-2 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
string dayOut = b + "-" + a + "-" + DateTime.DaysInMonth(Convert.ToInt32(b), m).ToString();
conn.Open();
conn.BeginTransaction();
try
{
String sqlStr = @"delete JZ_RPT020_D WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
String Str = @"delete JZ_RPT020_M WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(Str, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
//dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
dayEnd = dayBegin.AddMonths(1);
String sqlStr2 = @"INSERT INTO JZ_RPT029 select * from ( SELECT
'' AS 行号
,'' AS 单据号_FBillno
,'' AS 单据号_FTrantype
,K.K_CODE AS 物料编码_FNumber
,T.GOODS_CODE AS 物料编码_FName
,'' AS 物料编码_FModel
,'' AS 辅助属性_FNumber
,'' AS 辅助属性_FName
,'*' AS 辅助属性_FClassName
,'件' AS 单位_FNumber
,'件' AS 单位_FName
,SUM(T.DNUM) AS 实收数量
,0 AS 单价
,0 AS 金额
,'' AS 备注
,SUM(T.DNUM) AS 基本单位实收数量
,'' AS 生产_采购日期
,'' AS 有效期至
,'' AS 收货仓库_FNumber
,T.FNAME AS 收货仓库_FName
,NULL AS 仓位_FName
,NULL AS 仓位_FGroupName
,0 AS 辅助数量
,to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM (
SELECT CASE
WHEN TS.PROCEDUREID IN (3, 26) THEN
'J'
WHEN TS.PROCEDUREID IN (21, 31) THEN
'S'
ELSE
'Y'
END || G.GOODSMODEL AS GOODS_CODE
,-1 AS DNUM
,CASE
WHEN TS.PROCEDUREID = 26 THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID = 3 THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID = 28 THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID IN( 24,34) THEN
'釉坯库(一期)'
WHEN TS.PROCEDUREID = 31 THEN
'窑坯(一期)'
WHEN TS.PROCEDUREID = 21 THEN
'窑坯(一期)'
ELSE
NULL
END FNAME
FROM TP_PM_PRODUCTIONDATA TS
INNER JOIN TP_MST_GOODS G
ON TS.GOODSID = G.GOODSID
WHERE TS.BACKOUTTIME >= @DATEBEGIN@
AND TS.BACKOUTTIME < @DATEEND@
AND TS.PROCEDUREID IN (3, 26, 28, 24,34, 21, 31)
) T
LEFT JOIN TA_IMEX_kingdee_Goodscode K ON T.GOODS_CODE = K.K_NAME AND T.FNAME = K.K_WAREHOUSE
GROUP BY K.K_CODE, T.GOODS_CODE, T.FNAME)";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result1 += conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
;
}
conn.Commit();
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export029产品入库退单结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
//if (result > 0 && result1 > 0)
if (result1 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export029产品入库退单结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export029产品入库退单结转0条!");
}
}
}
public static void export030()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-8-4 陈强
String sqlStrc = @"delete JZ_RPT030 where FORWARDTIME = @c@ ";
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string mouth = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string year = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(year + mouth);
conn.ExecuteNonQuery(sqlStrc, new CDAParameter("c", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
DateTime T = DateTime.Now.AddMonths(-1);
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(year + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
//明细
String sqlStr1 = @" insert into JZ_RPT030 select * from (
SELECT to_number(@YEAR@|| lpad(to_char(@I@),2,'0')),
to_char(rownum) AS 行号
, TT.* FROM ( SELECT
'' AS ""单据号_FBillno""
,'' AS ""单据号_FTrantype""
,K.K_CODE AS ""物料代码_FNumber""
,T.GOODS_CODE AS ""物料代码_FName""
,'' AS ""物料代码_FModel""
,'' AS ""辅助属性_FNumber""
,'' AS ""辅助属性_FName""
,'*' AS ""辅助属性_FClassName""
,0 AS ""基本缺省调拨数量""
,0 AS ""基本调入仓库存量""
,'' AS ""批号""
,'个' AS ""单位_FNumber""
,'个' AS ""单位_FName""
,0 AS ""缺省调拨数量""
,0 AS ""调入仓库存量""
,SUM(T.DNUM) AS ""数量""
,0 AS ""单位成本""
,SUM(T.DNUM) AS ""基本单位数量""
,0 AS ""成本""
,0 AS ""调拨单价""
,0 AS ""调拨金额""
,'' AS ""备注""
,'' AS ""生产_采购日期""
,0 AS ""保质期(天)""
,'' AS ""有效期至""
,'' AS ""调出仓库_FNumber""
,FNAME_OUT AS ""调出仓库_FName""
,'' AS ""调出仓位_FName""
,'' AS ""调入仓库_FNumber""
,FNAME_IN AS ""调入仓库_FName""
,0 AS ""辅助数量""
FROM (SELECT 'J' || G.GOODSMODEL AS GOODS_CODE
,1 AS DNUM
,CASE
WHEN TS.PROCEDUREID = 39 THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID = 38 THEN
'精坯库(二期)'
ELSE
NULL
END FNAME_OUT
,CASE
WHEN TS.PROCEDUREID = 39 THEN
'010'
WHEN TS.PROCEDUREID = 38 THEN
'039'
ELSE
NULL
END FNAME_CODE_OUT
,CASE
WHEN TS.PROCEDUREID = 38 THEN
'精坯库(一期)'
WHEN TS.PROCEDUREID = 39 THEN
'精坯库(二期)'
ELSE
NULL
END FNAME_IN
,CASE
WHEN TS.PROCEDUREID = 38 THEN
'010'
WHEN TS.PROCEDUREID = 39 THEN
'039'
ELSE
NULL
END FNAME_CODE_IN
FROM TP_PM_PRODUCTIONDATA TS
INNER JOIN TP_MST_GOODS G
ON TS.GOODSID = G.GOODSID
WHERE TS.CREATETIME >= @DATEBEGIN@
AND TS.CREATETIME <= @DATEEND@
AND TS.PROCEDUREID IN (38,39) ) T
LEFT JOIN TA_IMEX_kingdee_Goodscode K ON T.GOODS_CODE = K.K_NAME AND T.FNAME_OUT = K.K_WAREHOUSE
GROUP BY K.K_CODE, T.GOODS_CODE, T.FNAME_OUT, FNAME_CODE_OUT,T.FNAME_IN, FNAME_CODE_IN
ORDER BY K.K_CODE, T.GOODS_CODE, T.FNAME_OUT ) TT)";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", year));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
sqlPara.Add(new CDAParameter("T", T));
sqlPara.Add(new CDAParameter("D", DateTime.Now.AddDays(1 - DateTime.Now.Day).AddDays(-1)));
result += conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export030产品调拨单结转成功!");
}
else
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export030产品调拨单结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export030产品调拨单结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export031()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete JZ_RPT031 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @"INSERT INTO JZ_RPT031
SELECT * FROM
(SELECT DECODE(T.GROUTINGUSERCODE
,NULL
,MU.USERNAME || '[合计]'
,MU.USERNAME) AS 组别
,T.GROUTINGUSERCODE AS 成型工号
,T.GOODSCODE AS 产品编码
,T.USERCODE AS 生产工号
,T.USERNAME AS 姓名
,COUNT(distinct T.MPID) AS 回收合格数
,'0'AS BUILDINGNO
,to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM (SELECT PD.PRODUCTIONDATAID
,U.USERCODE
,U.USERNAME
,PD.GOODSCODE
,PD.GROUTINGUSERCODE
,PD.GROUTINGLINEID
,MIN(MPD.PRODUCTIONDATAID) MPID
FROM TP_PM_PRODUCTIONDATA PD
INNER JOIN TP_PM_PRODUCTIONDATA MPD
ON MPD.BARCODE = PD.BARCODE
LEFT JOIN TP_PM_PRODUCTIONDATA RPD
ON RPD.BARCODE = PD.BARCODE
AND RPD.MODELTYPE = 9
AND RPD.PRODUCTIONDATAID > PD.PRODUCTIONDATAID
AND RPD.PRODUCTIONDATAID < MPD.PRODUCTIONDATAID
INNER JOIN TP_MST_USER U
ON U.USERID = PD.USERID
WHERE PD.PROCEDUREID = 37
AND PD.VALUEFLAG = '1'
AND PD.CREATETIME >= @DATEBEGIN@
AND PD.CREATETIME <= @DATEEND@
AND MPD.PRODUCTIONDATAID > PD.PRODUCTIONDATAID
AND MPD.MODELTYPE = -1
AND MPD.VALUEFLAG = '1'
AND RPD.PRODUCTIONDATAID IS NULL
GROUP BY PD.PRODUCTIONDATAID
,U.USERCODE
,U.USERNAME
,PD.GOODSCODE
,PD.GROUTINGUSERCODE
,PD.GROUTINGLINEID) T
INNER JOIN TP_PM_PRODUCTIONDATA P
ON P.PRODUCTIONDATAID = T.MPID
LEFT JOIN TP_PM_DEFECT D
ON D.PRODUCTIONDATAID = T.MPID
INNER JOIN TP_PC_GROUTINGLINE GL
ON GL.GROUTINGLINEID = T.GROUTINGLINEID
LEFT JOIN TP_MST_USER MU
ON MU.USERID = GL.MONITORID
WHERE P.GOODSLEVELTYPEID IN (4, 5)
AND (GL.BUILDINGNO = '' OR '' IS NULL)
GROUP BY GROUPING SETS((MU.USERNAME, T.GROUTINGUSERCODE, T.USERCODE, T.USERNAME, T.GOODSCODE,GL.BUILDINGNO),(MU.USERNAME,GL.BUILDINGNO))
ORDER BY MU.USERNAME, T.GROUTINGUSERCODE) DD WHERE DD .产品编码 IS NOT NULL";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export031堵漏气回收合格汇总表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export031堵漏气回收合格汇总表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export031堵漏气回收合格汇总表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export032()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-29 陈强
String sqlStr = @"delete AJZ_RPT032 where FORWARDTIME = @c@";
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month;
string mouth = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string year = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(year + mouth);
string result1 = "";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("c", c));
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
//String[] arr = { "13", "35" };
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(year + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
//for (int a = 0; a < arr.Length; a++)
//{
// String s = arr[a];
// for (int j = 0; j <= 2; j++)
// {
// String str = j + "#";
// for (int b = 0; b <= 4; b++)
// {
// String br = b.ToString();
String sqlStr1 = @" INSERT INTO AJZ_RPT032
SELECT
*
FROM
(
SELECT
DECODE( TA.GID, 3, '合计', TA.GOODSTYPENAME ) AS 产品类别,
TA.GOODSNAME AS 产品名称,
DECODE( TA.OUT_K, 0, NULL, TA.OUT_K ) AS 出窑数,
DECODE( TA.COUNT_U4, 0, NULL, TA.COUNT_U4 ) AS U级,
DECODE( TA.COUNT_U5 + TA.COUNT_AB, 0, NULL, TA.COUNT_U5 + TA.COUNT_AB ) A级,
DECODE( TA.COUNT_AA, 0, NULL, TA.COUNT_AA ) AS AA级,
DECODE( TA.COUNT_B, 0, NULL, TA.COUNT_B ) AS B级,
DECODE( TA.COUNT_R, 0, NULL, TA.COUNT_R ) AS R级,
DECODE( TA.COUNT_L, 0, NULL, TA.COUNT_L ) AS L级,
DECODE(
TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F,
0,
NULL,
TA.COUNT_U7 - TA.COUNT_B + TA.COUNT_H + TA.COUNT_F
) AS F级,
DECODE( TA.COUNT_Z, 0, NULL, TA.COUNT_Z ) AS Z级,
CASE
WHEN TA.OUT_K IS NULL
OR TA.OUT_K = 0 THEN
NULL ELSE ROUND( ( TA.COUNT_U4 + TA.COUNT_U5 + TA.COUNT_AB + TA.COUNT_AA ) / TA.OUT_K, 4 ) * 100
END AS UA率,
to_number( to_char( @YEAR@ ) || lpad( to_char( @I@), 2, '0' ) ),
TA.BUILDINGNO ,
0 as KILNID,
TA.PROCEDUREID,
TD.成型缺陷_糙活,
TD.成型缺陷_成裂,
TD.成型缺陷_成脏,
TD.成型缺陷_成走,
TD.成型缺陷_孔不良,
TD.成型缺陷_泥绺,
TD.成型缺陷_坯脏,
TD.成型缺陷_注泡,
TD.成型缺陷_棕眼,
TD.成型缺陷_合计,
TD.施釉缺陷_爆釉,
TD.施釉缺陷_标不良,
TD.施釉缺陷_脱釉,
TD.施釉缺陷_釉薄,
TD.施釉缺陷_釉磕,
TD.施釉缺陷_釉绺,
TD.施釉缺陷_釉脏,
TD.施釉缺陷_釉粘,
TD.施釉缺陷_釉泡,
TD.施釉缺陷_合计,
TD.合计
FROM
(
SELECT
GROUPING_ID ( T.PROCEDUREID,T.BUILDINGNO,GT.GOODSTYPECODE, G.GOODSCODE ) GID,
GT.GOODSTYPECODE,
GT.GOODSTYPENAME,
G.GOODSCODE,
G.GOODSNAME,
T.BUILDINGNO,
T.PROCEDUREID,
SUM( T.OUT_K ) OUT_K,
SUM( CASE WHEN T.H_NUM = 0 AND T.GOODSLEVELTYPEID = 4 THEN OUT_K ELSE 0 END ) COUNT_U4, -- 直接正品
SUM( CASE WHEN T.H_NUM = 0 AND T.GOODSLEVELTYPEID = 5 THEN OUT_K ELSE 0 END ) COUNT_U5, -- 直接副品
SUM( CASE WHEN T.H_NUM = 0 AND T.GOODSLEVELTYPEID = 7 THEN OUT_K ELSE 0 END ) COUNT_U7, -- 直接次品
SUM( CASE WHEN T.H_NUM = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 19 THEN OUT_K ELSE 0 END ) AS COUNT_R,
SUM( CASE WHEN T.H_NUM = 0 AND T.GOODSLEVELTYPEID = 6 AND T.REWORKPROCEDUREID = 36 THEN OUT_K ELSE 0 END ) AS COUNT_Z,
SUM( T.B_NUM ) AS COUNT_B,
SUM( CASE WHEN T.H_NUM = 1 THEN OUT_K ELSE 0 END ) AS COUNT_H,
SUM( CASE WHEN RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN - 1 ELSE 0 END ) COUNT_L, -- 冷补、堵漏气检验数 + 研磨+刷洗
SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23 ) THEN 1 ELSE 0 END ) COUNT_AA, -- 冷补合格数
SUM( CASE WHEN T.GOODSLEVELTYPEID IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_AB, -- 堵漏气合格数 + 研磨+刷洗
SUM( CASE WHEN T.GOODSLEVELTYPEID NOT IN ( 4, 5 ) AND RPD.PROCEDUREID IN ( 22, 23, 37, 20, 41 ) THEN 1 ELSE 0 END ) COUNT_F -- 冷补、堵漏气不合格数 + 研磨+刷洗
FROM
(
SELECT
PD.PRODUCTIONDATAID,
NULL MPDID,
CPD.GOODSLEVELTYPEID,
PD.GOODSID,
CPD.REWORKPROCEDUREID,
CASE WHEN CPD.GOODSLEVELTYPEID = 7 AND COUNT( D.PRODUCTIONDEFECTID ) > 0 THEN 1 ELSE 0 END B_NUM, --B级品
1 OUT_K,
CASE WHEN COUNT( MPD.PRODUCTIONDATAID ) > 0 THEN 1 ELSE 0 END H_NUM,
GL.BUILDINGNO as BUILDINGNO,
pd.PROCEDUREID as PROCEDUREID
FROM
TP_PM_PRODUCTIONDATA PD
INNER JOIN TP_PM_PRODUCTIONDATA CPD ON PD.GROUTINGDAILYDETAILID = CPD.GROUTINGDAILYDETAILID
AND CPD.CHECKBATCHNO = 1
AND CPD.KILNCARBATCHNO = PD.KILNCARBATCHNO
LEFT JOIN TP_PM_PRODUCTIONDATA MPD ON PD.CHECKBATCHNO <> 1
AND PD.GROUTINGDAILYDETAILID = MPD.GROUTINGDAILYDETAILID
AND MPD.VALUEFLAG = '1'
AND MPD.PRODUCTIONDATAID < CPD.PRODUCTIONDATAID
AND MPD.PRODUCTIONDATAID > PD.PRODUCTIONDATAID
AND MPD.PROCEDUREMODEL = '1'
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = CPD.PRODUCTIONDATAID
AND D.DEFECTID = 92
AND D.VALUEFLAG = '1'
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
/*20 研磨 22 直接冷补 23 研磨后冷补(非回收) 37 堵漏气 41 刷洗不良*/
--AND MPD.PROCEDUREID IN (20, 22, 23, 37, 41)
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
WHERE
PD.PROCEDUREID IN(13,35)
AND
PD.CHECKFLAG = 1
AND PD.CREATETIME >= @DATEBEGIN@
AND PD.CREATETIME < @DATEEND@
-- AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
-- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
-- AND GL.BUILDINGNO = @BUILDINGNO@
AND G.GOODSTYPEID = 8
GROUP BY
PD.PRODUCTIONDATAID,
CPD.GOODSLEVELTYPEID,
PD.GOODSID,
CPD.REWORKPROCEDUREID,
GL.BUILDINGNO,
PD.PROCEDUREID
UNION ALL
SELECT
PD.PRODUCTIONDATAID,
MAX( MPD.PRODUCTIONDATAID ) MPDID,
PD.GOODSLEVELTYPEID,
PD.GOODSID,
PD.REWORKPROCEDUREID,
0 B_NUM,
0 OUT_K,
1 H_NUM,
GL.BUILDINGNO as BUILDINGNO,
PD.PROCEDUREID as PROCEDUREID
FROM
TP_PM_PRODUCTIONDATA PD
INNER JOIN TP_PM_PRODUCTIONDATA MPD ON PD.GROUTINGDAILYDETAILID = MPD.GROUTINGDAILYDETAILID
AND MPD.VALUEFLAG = '1'
AND MPD.PRODUCTIONDATAID < PD.PRODUCTIONDATAID
AND MPD.PROCEDUREMODEL = '1'
INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = PD.GROUTINGLINEID
/* 20 研磨 22 直接冷补 23 研磨后冷补(非回收)37 堵漏气 41 刷洗不良 */
--AND MPD.PROCEDUREID IN (20, 22, 23, 37, 41)
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
WHERE
PD.VALUEFLAG = '1'
AND PD.PROCEDUREID IN(13,35)
AND PD.CHECKBATCHNO = 1
AND PD.CREATETIME >= @DATEBEGIN@
AND PD.CREATETIME < @DATEEND@
-- AND (PD.KILNID = @KILNID@ OR @KILNID@ IS NULL)
-- AND (PD.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
-- AND GL.BUILDINGNO = @BUILDINGNO@
AND G.GOODSTYPEID = 8
GROUP BY
PD.PRODUCTIONDATAID,
PD.GOODSLEVELTYPEID,
PD.GOODSID,
PD.REWORKPROCEDUREID ,
GL.BUILDINGNO,
PD.PROCEDUREID
) T
LEFT JOIN TP_PM_PRODUCTIONDATA RPD ON RPD.PRODUCTIONDATAID = T.MPDID
INNER JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
GROUP BY
GROUPING SETS ( ( T.BUILDINGNO,T.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, G.GOODSNAME ), ( T.BUILDINGNO,T.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME ), ( ) )
) TA
LEFT JOIN (
SELECT
*
FROM
(
SELECT
CASE WHEN TT.GID IN ( 12, 13, 15 ) THEN 3 WHEN TT.GID IN ( 4, 5, 7 ) THEN 1 ELSE 0 END AS D_GID,
TT.GOODSTYPECODE D_GOODSTYPECODE, --,TT.GOODSTYPENAME D_
TT.GOODSCODE D_GOODSCODE,
CASE WHEN TT.GID IN ( 1, 5, 13 ) THEN TT.DEFECT || '合计' WHEN TT.GID IN ( 3, 7, 15 ) THEN '合计' ELSE TT.DEFECT END AS DEFECT,
TT.CNUM,
TT.BUILDINGNO,
TT.PROCEDUREID
FROM
(
SELECT
GROUPING_ID ( L.BUILDINGNO,p.PROCEDUREID,GT.GOODSTYPECODE, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ) AS GID,
GT.GOODSTYPECODE,
GT.GOODSTYPENAME,
G.GOODSCODE,
PDP.DEFECTGROUPNAME,
TO_CHAR( PDP.DEFECTGROUPNAME || '_' || M.DEFECTNAME ) AS DEFECT,
COUNT( * ) AS CNUM,
L.BUILDINGNO AS BUILDINGNO,
P.PROCEDUREID AS PROCEDUREID
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_MST_GOODS G ON G.GOODSID = P.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
INNER JOIN TP_PC_GROUTINGLINE L ON P.GROUTINGLINEID = L.GROUTINGLINEID
INNER JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
--只取缺陷位置defectpositionid=8 注修工defectjobs=37
AND D.DEFECTPOSITIONID = 8
--AND D.DEFECTJOBS = 37
INNER JOIN TP_MST_DEFECT M ON ( M.DEFECTID = D.DEFECTID AND M.DEFECTID > 0 )
LEFT JOIN TP_PC_PROCEDURE PR ON PR.PROCEDUREID = D.DEFECTPROCEDUREID
INNER JOIN TP_MST_DEFECTGROUP PDP ON PDP.DEFECTID = D.DEFECTID AND PDP.DEFECTGROUPTYPE LIKE '水箱盖%'
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID IN(13,35)
AND P.CHECKBATCHNO = 1
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME < @DATEEND@
AND P.GOODSLEVELTYPEID <> 4
-- AND (P.KILNID = @KILNID@ OR @KILNID@ IS NULL)
-- AND (P.GOODSCODE = @GOODSCODE@ OR @GOODSCODE@ IS NULL)
-- AND L.BUILDINGNO = @BUILDINGNO@
--XUWEI 2020-07-10 ADD
--AND (NOT D.DEFECTPROCEDUREID IS NULL)
AND G.GOODSTYPEID = 8
GROUP BY
GROUPING SETS (
( L.BUILDINGNO,P.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
( L.BUILDINGNO,P.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE, PDP.DEFECTGROUPNAME ),
( L.BUILDINGNO,P.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME, G.GOODSCODE ),
( L.BUILDINGNO,P.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
( L.BUILDINGNO,P.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME, PDP.DEFECTGROUPNAME ),
( L.BUILDINGNO,P.PROCEDUREID,GT.GOODSTYPECODE, GT.GOODSTYPENAME ),
( L.BUILDINGNO,P.PROCEDUREID,PDP.DEFECTGROUPNAME, M.DEFECTNAME ),
( L.BUILDINGNO,P.PROCEDUREID,PDP.DEFECTGROUPNAME ),
( )
)
-- ORDER BY
-- GT.GOODSTYPECODE,
-- G.GOODSCODE,
-- PDP.DEFECTGROUPNAME,
-- M.DEFECTNAME
) TT
) PIVOT (
SUM( CNUM ) FOR DEFECT IN (
'成型缺陷_糙活' AS 成型缺陷_糙活,
'成型缺陷_成裂' AS 成型缺陷_成裂,
'成型缺陷_成脏' AS 成型缺陷_成脏,
'成型缺陷_成走' AS 成型缺陷_成走,
'成型缺陷_孔不良' AS 成型缺陷_孔不良,
'成型缺陷_泥绺' AS 成型缺陷_泥绺,
'成型缺陷_坯脏' AS 成型缺陷_坯脏,
'成型缺陷_注泡' AS 成型缺陷_注泡,
'成型缺陷_棕眼' AS 成型缺陷_棕眼,
'成型缺陷_合计' AS 成型缺陷_合计,
'施釉缺陷_爆釉' AS 施釉缺陷_爆釉,
'施釉缺陷_标不良' AS 施釉缺陷_标不良,
'施釉缺陷_脱釉' AS 施釉缺陷_脱釉,
'施釉缺陷_釉薄' AS 施釉缺陷_釉薄,
'施釉缺陷_釉磕' AS 施釉缺陷_釉磕,
'施釉缺陷_釉绺' AS 施釉缺陷_釉绺,
'施釉缺陷_釉脏' AS 施釉缺陷_釉脏,
'施釉缺陷_釉粘' AS 施釉缺陷_釉粘,
'施釉缺陷_釉泡' AS 施釉缺陷_釉泡,
'施釉缺陷_合计' AS 施釉缺陷_合计,
'合计' AS 合计
)
)
) TD ON TA.GID = TD.D_GID
AND TA.BUILDINGNO = TD.BUILDINGNO
AND TA.PROCEDUREID = TD.PROCEDUREID
AND
(
( TA.GID = 0 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE AND TA.GOODSCODE = TD.D_GOODSCODE )
OR ( TA.GID = 1 AND TA.GOODSTYPECODE = TD.D_GOODSTYPECODE )
OR ( TA.GID = 3 )
)
) t
WHERE
t.产品名称 IS NOT NULL";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", year));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
// }
//}
// }
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export032水箱盖每窑质量统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(year + "年" + mouth + "月:export032水箱盖每窑质量统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export032水箱盖每窑质量统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export033()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int m = DateTime.Now.AddMonths(-1).Month; ;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete AJZ_RPT033 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
String sqlStr1 = @" INSERT INTO AJZ_RPT033 SELECT
工号,
工种,
姓名,
FORWARD_TIME,
挂座,
座便,
连体,
水箱,
盆,
柱,
合计
FROM
(
SELECT
DECODE( GID, 14, '[合计]', 15, '[合计]',工号 ) AS 工号,
工种,
姓名,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0')) as FORWARD_TIME,
DECODE( GID, 1, '合计', 15, '合计',产品 ) AS 产品,
数量 as 数量
FROM
(
SELECT
GROUPING_ID ( U.USERCODE, H.STAFFNAME, J.JOBSNAME, T.GOODSTYPENAME ) AS GID,
U.USERCODE AS 工号,
J.JOBSNAME AS 工种,
H.STAFFNAME AS 姓名,
T.GOODSTYPENAME AS 产品,
COUNT( * ) AS 数量
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = P.GOODSID
INNER JOIN TP_MST_GOODSTYPE T ON T.GOODSTYPEID = G.GOODSTYPEID
AND ( T.GOODSTYPEID NOT IN ( 9, 11 ) )
LEFT JOIN TP_PC_CLASSESDETAIL C ON C.CLASSESSETTINGID = P.CLASSESSETTINGID
LEFT JOIN TP_MST_USER U ON U.USERID = C.USERID
LEFT JOIN TP_HR_STAFF H ON H.STAFFID = C.STAFFID
INNER JOIN TP_MST_JOBS J ON J.JOBSID = C.UJOBSID
WHERE
P.VALUEFLAG = '1'
AND PROCEDUREID = 15
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME < @DATEEND@
GROUP BY
GROUPING SETS (
( U.USERCODE, H.STAFFNAME, J.JOBSNAME, T.GOODSTYPENAME ),
( U.USERCODE, H.STAFFNAME, J.JOBSNAME ),
( T.GOODSTYPENAME ),
( )
)
)
) PIVOT (
SUM( 数量 ) FOR 产品 IN ( '挂座' AS 挂座, '座' AS 座便, '连体' AS 连体, '箱' AS 水箱, '盆' AS 盆, '柱' AS 柱, '合计' AS 合计 )
) ";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
}
conn.Commit();
if (result > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export033包装入仓产量统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export033包装入仓产量统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export033包装入仓产量统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export034()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int result2 = 0;
int m = DateTime.Now.AddMonths(-1).Month; ;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete AJZ_RPT034 WHERE FORWARDTIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1);
String sqlStr1 = @"
INSERT INTO AJZ_RPT034 SELECT
P1.工号,
P1.姓名,
P1.产品,
P1.日期,
P1.出窑数量,
NVL(P2.缺陷数量s,0) AS 缺陷数量,
ROUND( NVL(P2.缺陷数量s,0)/ DECODE( P1.出窑数量 , 0, 1,P1.出窑数量 ), 4 ) * 100 || '%' AS 缺陷率,
'1#' AS BUILDINGNO,
'0' AS USERCODE1,
'0' AS STAFFNAME1,
'0' AS CHECKTIME1,
'0' AS GOODSNAME1,
0 AS QX_COUNT1,
P2.合格数_上坯工,
P2.合格数_擦坯工,
P2.合格数_施釉工,
P2.合格数_找枪工,
P2.合格数_擦釉工,
P2.合格数_检修工,
P2.合格数_刷氯化镁,
P2.合格数_巡检工,
P2.合格数_下坯工,
P2.合格数_循环线施釉,
P2.合格数_循环线擦坯,
P2.合格数_合计,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
U.USERCODE AS 工号,
H.STAFFNAME AS 姓名,
P.GOODSNAME AS 产品,
TO_CHAR( TRUNC( P.CHECKTIME ), 'YYYY-MM-DD' ) AS 日期,
COUNT( * ) AS 出窑数量
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA XHX ON XHX.BARCODE = P.BARCODE
AND XHX.PROCEDUREID = 33
AND XHX.VALUEFLAG = '1'
LEFT JOIN TP_PC_CLASSESDETAIL C ON C.CLASSESSETTINGID = XHX.CLASSESSETTINGID
LEFT JOIN TP_MST_USER U ON U.USERID = C.USERID
LEFT JOIN TP_HR_STAFF H ON H.STAFFID = C.STAFFID
INNER JOIN TP_MST_JOBS J ON J.JOBSID = C.UJOBSID
AND J.JOBSID IN ( 59, 43, 42, 62, 63, 71, 73, 70, 60, 67, 68 )
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13
AND P.CHECKBATCHNO = '1'
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME < @DATEEND@
GROUP BY
U.USERCODE,
H.STAFFNAME,
P.GOODSNAME,
TRUNC( P.CHECKTIME )
) P1
LEFT JOIN (
SELECT
*
FROM
(
SELECT--GID,
工号 AS 工号s,
DECODE( GID, 6, 姓名 || '[合计]', 7, 姓名 || '[合计]', 姓名 ) AS 姓名s,
TO_CHAR( 日期, 'YYYY-MM-DD' ) AS 日期s,
DECODE( GID, 1, '合计', 7, '合计', 工种 ) AS 工种,
产品 AS 产品s,
合格数量,
缺陷数量 AS 缺陷数量s
FROM
(
SELECT
GROUPING_ID ( U.USERCODE, H.STAFFNAME, TRUNC( P.CHECKTIME ), P.GOODSNAME, J.JOBSNAME ) AS GID,
U.USERCODE AS 工号,
H.STAFFNAME AS 姓名,
TRUNC( P.CHECKTIME ) AS 日期,
J.JOBSNAME AS 工种,
P.GOODSNAME AS 产品,
SUM( CASE WHEN P.GOODSLEVELTYPEID IN ( 4, 5 ) OR D.DEFECTPROCEDUREID <> 16 THEN 1 ELSE 0 END ) AS 合格数量,
SUM( CASE WHEN P.GOODSLEVELTYPEID NOT IN ( 4, 5 ) AND D.DEFECTPROCEDUREID = 16 THEN 1 ELSE 0 END ) AS 缺陷数量
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA XHX ON XHX.BARCODE = P.BARCODE
AND XHX.PROCEDUREID = 33
AND XHX.VALUEFLAG = '1'
LEFT JOIN TP_PC_CLASSESDETAIL C ON C.CLASSESSETTINGID = XHX.CLASSESSETTINGID
LEFT JOIN TP_MST_USER U ON U.USERID = C.USERID
LEFT JOIN TP_HR_STAFF H ON H.STAFFID = C.STAFFID
INNER JOIN TP_MST_JOBS J ON J.JOBSID = C.UJOBSID
AND J.JOBSID IN ( 59, 43, 42, 62, 63, 71, 73, 70, 60, 67, 68 )
LEFT JOIN (
SELECT
PRODUCTIONDATAID,
DEFECTPROCEDUREID
FROM
TP_PM_DEFECT D
WHERE
PRODUCTIONDEFECTID IN ( SELECT MAX( PRODUCTIONDEFECTID ) FROM TP_PM_DEFECT T WHERE T.PRODUCTIONDATAID = D.PRODUCTIONDATAID )
) D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13
AND P.CHECKBATCHNO = '1'
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME < @DATEEND@
GROUP BY
GROUPING SETS (
( U.USERCODE, H.STAFFNAME, TRUNC( P.CHECKTIME ), P.GOODSNAME, J.JOBSNAME ),
( U.USERCODE, H.STAFFNAME, TRUNC( P.CHECKTIME ), P.GOODSNAME ),
( U.USERCODE, H.STAFFNAME, J.JOBSNAME ),
( U.USERCODE, H.STAFFNAME )
)
)
) PIVOT (
SUM( 合格数量 ) FOR 工种 IN (
'上坯工' AS 合格数_上坯工,
'擦坯工' AS 合格数_擦坯工,
'施釉工' AS 合格数_施釉工,
'找枪工' AS 合格数_找枪工,
'擦釉工' AS 合格数_擦釉工,
'检修工' AS 合格数_检修工,
'刷氯化镁' AS 合格数_刷氯化镁,
'巡检工' AS 合格数_巡检工,
'下坯工' AS 合格数_下坯工,
'循环线施釉' AS 合格数_循环线施釉,
'循环线擦坯' AS 合格数_循环线擦坯,
'合计' AS 合格数_合计
)
)
ORDER BY
工号s,姓名s
) P2 ON P1.工号 = P2.工号s
AND P1.姓名 = P2.姓名s
AND P1.产品 = P2.产品s
AND P1.日期 = P2.日期s
";
String sqlStr2 = @"
INSERT INTO AJZ_RPT034 SELECT
P1.工号,
P1.姓名,
P1.产品,
P1.日期,
P1.出窑数量,
NVL(P2.缺陷数量s,0) AS 缺陷数量,
ROUND( NVL(P2.缺陷数量s,0)/ DECODE( P1.出窑数量 , 0, 1,P1.出窑数量 ), 4 ) * 100 || '%' AS 缺陷率,
'2#' AS BUILDINGNO,
'0' AS USERCODE1,
'0' AS STAFFNAME1,
'0' AS CHECKTIME1,
'0' AS GOODSNAME1,
0 AS QX_COUNT1,
P2.合格数_上坯工,
P2.合格数_擦坯工,
P2.合格数_施釉工,
P2.合格数_找枪工,
P2.合格数_擦釉工,
P2.合格数_检修工,
P2.合格数_刷氯化镁,
P2.合格数_巡检工,
P2.合格数_下坯工,
P2.合格数_循环线施釉,
P2.合格数_循环线擦坯,
P2.合格数_合计,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM
(
SELECT
U.USERCODE AS 工号,
H.STAFFNAME AS 姓名,
P.GOODSNAME AS 产品,
TO_CHAR( TRUNC( P.CHECKTIME ), 'YYYY-MM-DD' ) AS 日期,
COUNT( * ) AS 出窑数量
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA XHX ON XHX.BARCODE = P.BARCODE
AND XHX.PROCEDUREID = 16
AND XHX.VALUEFLAG = '1'
LEFT JOIN TP_PC_CLASSESDETAIL C ON C.CLASSESSETTINGID = XHX.CLASSESSETTINGID
LEFT JOIN TP_MST_USER U ON U.USERID = C.USERID
LEFT JOIN TP_HR_STAFF H ON H.STAFFID = C.STAFFID
INNER JOIN TP_MST_JOBS J ON J.JOBSID = C.UJOBSID
AND J.JOBSID IN ( 59, 43, 42, 62, 63, 71, 73, 70, 60, 67, 68 )
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13
AND P.CHECKBATCHNO = '1'
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME < @DATEEND@
GROUP BY
U.USERCODE,
H.STAFFNAME,
P.GOODSNAME,
TRUNC( P.CHECKTIME )
) P1
LEFT JOIN (
SELECT
*
FROM
(
SELECT--GID,
工号 AS 工号s,
DECODE( GID, 6, 姓名 || '[合计]', 7, 姓名 || '[合计]', 姓名 ) AS 姓名s,
TO_CHAR( 日期, 'YYYY-MM-DD' ) AS 日期s,
DECODE( GID, 1, '合计', 7, '合计', 工种 ) AS 工种,
产品 AS 产品s,
合格数量,
缺陷数量 AS 缺陷数量s
FROM
(
SELECT
GROUPING_ID ( U.USERCODE, H.STAFFNAME, TRUNC( P.CHECKTIME ), P.GOODSNAME, J.JOBSNAME ) AS GID,
U.USERCODE AS 工号,
H.STAFFNAME AS 姓名,
TRUNC( P.CHECKTIME ) AS 日期,
J.JOBSNAME AS 工种,
P.GOODSNAME AS 产品,
SUM( CASE WHEN P.GOODSLEVELTYPEID IN ( 4, 5 ) OR D.DEFECTPROCEDUREID <> 16 THEN 1 ELSE 0 END ) AS 合格数量,
SUM( CASE WHEN P.GOODSLEVELTYPEID NOT IN ( 4, 5 ) AND D.DEFECTPROCEDUREID = 16 THEN 1 ELSE 0 END ) AS 缺陷数量
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA XHX ON XHX.BARCODE = P.BARCODE
AND XHX.PROCEDUREID = 16
AND XHX.VALUEFLAG = '1'
LEFT JOIN TP_PC_CLASSESDETAIL C ON C.CLASSESSETTINGID = XHX.CLASSESSETTINGID
LEFT JOIN TP_MST_USER U ON U.USERID = C.USERID
LEFT JOIN TP_HR_STAFF H ON H.STAFFID = C.STAFFID
INNER JOIN TP_MST_JOBS J ON J.JOBSID = C.UJOBSID
AND J.JOBSID IN ( 59, 43, 42, 62, 63, 71, 73, 70, 60, 67, 68 )
LEFT JOIN (
SELECT
PRODUCTIONDATAID,
DEFECTPROCEDUREID
FROM
TP_PM_DEFECT D
WHERE
PRODUCTIONDEFECTID IN ( SELECT MAX( PRODUCTIONDEFECTID ) FROM TP_PM_DEFECT T WHERE T.PRODUCTIONDATAID = D.PRODUCTIONDATAID )
) D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
WHERE
P.VALUEFLAG = '1'
AND P.PROCEDUREID = 13
AND P.CHECKBATCHNO = '1'
AND P.CHECKTIME >= @DATEBEGIN@
AND P.CHECKTIME < @DATEEND@
GROUP BY
GROUPING SETS (
( U.USERCODE, H.STAFFNAME, TRUNC( P.CHECKTIME ), P.GOODSNAME, J.JOBSNAME ),
( U.USERCODE, H.STAFFNAME, TRUNC( P.CHECKTIME ), P.GOODSNAME ),
( U.USERCODE, H.STAFFNAME, J.JOBSNAME ),
( U.USERCODE, H.STAFFNAME )
)
)
) PIVOT (
SUM( 合格数量 ) FOR 工种 IN (
'上坯工' AS 合格数_上坯工,
'擦坯工' AS 合格数_擦坯工,
'施釉工' AS 合格数_施釉工,
'找枪工' AS 合格数_找枪工,
'擦釉工' AS 合格数_擦釉工,
'检修工' AS 合格数_检修工,
'刷氯化镁' AS 合格数_刷氯化镁,
'巡检工' AS 合格数_巡检工,
'下坯工' AS 合格数_下坯工,
'循环线施釉' AS 合格数_循环线施釉,
'循环线擦坯' AS 合格数_循环线擦坯,
'合计' AS 合格数_合计
)
)
ORDER BY
工号s,姓名s
) P2 ON P1.工号 = P2.工号s
AND P1.姓名 = P2.姓名s
AND P1.产品 = P2.产品s
AND P1.日期 = P2.日期s
";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
result2 = conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
}
conn.Commit();
if (result > 0 && result2 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export034循环线产量统计表结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export034循环线产量统计表结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export034循环线产量统计表结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
public static void export035()
{
using (IDataAccess conn = DataAccess.Create())
{
try
{
conn.Open();
conn.BeginTransaction();
//2021-07-12 dongyan 修正什么问题
int result = 0;
int result1 = 0;
int result2 = 0;
int result3 = 0;
int result4 = 0;
int result5 = 0;
int m = DateTime.Now.AddMonths(-1).Month;
DateTime dayBegin = new DateTime();
DateTime dayEnd = new DateTime();
string a = DateTime.Now.AddMonths(-1).Month.ToString().PadLeft(2, '0');
string b = DateTime.Now.AddMonths(-1).Year.ToString();
int c = Convert.ToInt32(b + a);
String sqlStr = @"delete JZ_RPT035_01 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(sqlStr, new CDAParameter("C", c));
String Str1 = @"delete JZ_RPT035_02 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(Str1, new CDAParameter("C", c));
String Str2 = @"delete JZ_RPT035_03 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(Str2, new CDAParameter("C", c));
String Str3 = @"delete JZ_RPT035_04 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(Str3, new CDAParameter("C", c));
String Str4 = @"delete JZ_RPT035_05 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(Str4, new CDAParameter("C", c));
String Str5 = @"delete JZ_RPT035_06 WHERE FORWARD_TIME = @C@";
conn.ExecuteNonQuery(Str5, new CDAParameter("C", c));
for (int i = m; i <= m; i++)
{
dayBegin = Convert.ToDateTime(b + "-" + i.ToString().PadLeft(2, '0') + "-01");
dayEnd = dayBegin.AddMonths(1).AddMilliseconds(-1);
String sqlStr1 = @" INSERT INTO JZ_RPT035_01
SELECT
sys_guid(),
USERCODE_CHECK_FRONT ,
OUT_COUNT ,
PROCEDUREID_CHECK_FRONT ,
USERCODE_FRONT ,
GOODSNAME_FRONT ,
GOODSNAME_BEHIND ,
USERCODE_BEHIND ,
PROCEDUREID_CHECK_BEHIND ,
USERCODE_CHECK_BEHIND ,
CNUM1 ,
CNUM2 ,
CNUM3 ,
CNUM4 ,
CNUM5 ,
CNUM6 ,
CNUM7 ,
CNUM8 ,
CNUM9 ,
CNUM10 ,
CNUM11 ,
C_COUNT ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM(SELECT
CY.*,
QX.*
FROM
(
SELECT
--GROUPING_ID(P.GOODSNAME,U.USERCODE) AS GID,
DECODE( GROUPING_ID ( P.GOODSNAME, U.USERCODE ), 3, '[合计]', P.GOODSNAME ) AS GOODSNAME_FRONT,
U.USERCODE AS USERCODE_FRONT,
COUNT( * ) AS OUT_COUNT,
P.PROCEDUREID AS PROCEDUREID_CHECK_FRONT,
P.USERCODE AS USERCODE_CHECK_FRONT
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND U.PROCEDUREID IN ( 25,2 )
WHERE
P.CHECKFLAG = 1
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS ( ( P.GOODSNAME, U.USERCODE,P.PROCEDUREID,P.USERCODE ), (P.PROCEDUREID,P.USERCODE) )
) CY
LEFT JOIN (
SELECT
*
FROM
(
SELECT
DECODE( GID, 14, '[合计]', 15, '[合计]',产品 ) AS GOODSNAME_BEHIND,
工号 AS USERCODE_BEHIND,
DECODE( GID, 3, '合计', 15, '合计',缺陷名称 ) 缺陷名称,
缺陷数 ,
pro AS PROCEDUREID_CHECK_BEHIND,
us AS USERCODE_CHECK_BEHIND
FROM
(
SELECT
GROUPING_ID ( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME ) AS GID,
P.GOODSNAME AS 产品,
U.USERCODE AS 工号,
D.DEFECTPROCEDUREID AS 责任工序,
D.DEFECTNAME AS 缺陷名称,
COUNT( * ) AS 缺陷数 ,
P.PROCEDUREID AS pro,
P.USERCODE AS us
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECTGROUP G ON INSTR( G.DEFECTGROUPTYPE, '大帐' ) = 1
AND G.DEFECTGROUPNAME = '成型缺陷'
AND D.DEFECTID = G.DEFECTID
AND ( D.DEFECTPROCEDUREID IN ( 25,2 ) )
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND ( U.PROCEDUREID IN ( 25,2 ) )
WHERE
P.VALUEFLAG = '1'
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS (
( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME , P.PROCEDUREID ,P.USERCODE),
( P.GOODSNAME, U.USERCODE, P.PROCEDUREID ,P.USERCODE ),
( D.DEFECTNAME, P.PROCEDUREID ,P.USERCODE ),
( P.PROCEDUREID ,P.USERCODE )
)
)
) PIVOT (
SUM( 缺陷数 ) FOR 缺陷名称 IN (
'成裂' AS CNUM1,'棕眼' AS CNUM2,'糙活' AS CNUM3,'成脏' AS CNUM4,'成走' AS CNUM5,'注泡' AS CNUM6,'坯脏' AS CNUM7,'孔不良' AS CNUM8,'排水不良' AS CNUM9,'泥绺' AS CNUM10,'漏气' AS CNUM11,'合计' AS C_COUNT
)
)
) QX ON CY.GOODSNAME_FRONT = QX.GOODSNAME_BEHIND
AND ( CY.USERCODE_FRONT = QX.USERCODE_BEHIND OR CY.USERCODE_FRONT IS NULL )
AND CY.PROCEDUREID_CHECK_FRONT = QX.PROCEDUREID_CHECK_BEHIND And CY.USERCODE_CHECK_FRONT = QX.USERCODE_CHECK_BEHIND
)
";
String sqlStr2 = @" INSERT INTO JZ_RPT035_02
SELECT
sys_guid(),
USERCODE_CHECK_FRONT ,
OUT_COUNT ,
PROCEDUREID_CHECK_FRONT ,
USERCODE_FRONT ,
GOODSNAME_FRONT ,
GOODSNAME_BEHIND ,
USERCODE_BEHIND ,
PROCEDUREID_CHECK_BEHIND ,
USERCODE_CHECK_BEHIND ,
CNUM1 ,
CNUM2 ,
CNUM3 ,
CNUM4 ,
CNUM5 ,
CNUM6 ,
C_COUNT ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM(SELECT
CY.*,
QX.*
FROM
(
SELECT
--GROUPING_ID(P.GOODSNAME,U.USERCODE) AS GID,
DECODE( GROUPING_ID ( P.GOODSNAME, U.USERCODE ), 3, '[合计]', P.GOODSNAME ) AS GOODSNAME_FRONT,
U.USERCODE AS USERCODE_FRONT,
COUNT( * ) AS OUT_COUNT ,
P.PROCEDUREID AS PROCEDUREID_CHECK_FRONT,
P.USERCODE AS USERCODE_CHECK_FRONT
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND U.PROCEDUREID IN ( 7,0 )
WHERE
P.CHECKFLAG = 1
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS ( ( P.GOODSNAME, U.USERCODE,P.PROCEDUREID,P.USERCODE ), (P.PROCEDUREID,P.USERCODE) )
) CY
LEFT JOIN (
SELECT
*
FROM
(
SELECT
DECODE( GID, 14, '[合计]', 15, '[合计]',产品 ) AS GOODSNAME_BEHIND,
工号 AS USERCODE_BEHIND,
DECODE( GID, 3, '合计', 15, '合计',缺陷名称 ) 缺陷名称,
缺陷数 ,
pro AS PROCEDUREID_CHECK_BEHIND,
us AS USERCODE_CHECK_BEHIND
FROM
(
SELECT
GROUPING_ID ( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME ) AS GID,
P.GOODSNAME AS 产品,
U.USERCODE AS 工号,
D.DEFECTPROCEDUREID AS 责任工序,
D.DEFECTNAME AS 缺陷名称,
COUNT( * ) AS 缺陷数 ,
P.PROCEDUREID AS pro,
P.USERCODE AS us
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECTGROUP G ON INSTR( G.DEFECTGROUPTYPE, '大帐' ) = 1
AND G.DEFECTGROUPNAME = '登窑缺陷'
AND D.DEFECTID = G.DEFECTID
AND ( D.DEFECTPROCEDUREID IN ( 7,0 ) )
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND ( U.PROCEDUREID IN ( 7,0 ) )
WHERE
P.VALUEFLAG = '1'
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS (
( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME , P.PROCEDUREID ,P.USERCODE),
( P.GOODSNAME, U.USERCODE, P.PROCEDUREID ,P.USERCODE ),
( D.DEFECTNAME, P.PROCEDUREID ,P.USERCODE ),
( P.PROCEDUREID ,P.USERCODE )
)
)
) PIVOT (
SUM( 缺陷数 ) FOR 缺陷名称 IN (
'装磕' AS CNUM1,'装粘' AS CNUM2,'装走' AS CNUM3,'蹭釉' AS CNUM4,'落脏' AS CNUM5,'装脏' AS CNUM6,'合计' AS C_COUNT
)
)
) QX ON CY.GOODSNAME_FRONT = QX.GOODSNAME_BEHIND
AND ( CY.USERCODE_FRONT = QX.USERCODE_BEHIND OR CY.USERCODE_FRONT IS NULL )
AND CY.PROCEDUREID_CHECK_FRONT = QX.PROCEDUREID_CHECK_BEHIND And CY.USERCODE_CHECK_FRONT = QX.USERCODE_CHECK_BEHIND
) ";
string sqlStr3 = @" INSERT INTO JZ_RPT035_05
SELECT
sys_guid(),
USERCODE_CHECK_FRONT ,
OUT_COUNT ,
PROCEDUREID_CHECK_FRONT ,
USERCODE_FRONT ,
GOODSNAME_FRONT ,
GOODSNAME_BEHIND ,
USERCODE_BEHIND ,
PROCEDUREID_CHECK_BEHIND ,
USERCODE_CHECK_BEHIND ,
CNUM1 ,
CNUM2 ,
CNUM3 ,
CNUM4 ,
CNUM5 ,
CNUM6 ,
CNUM7 ,
CNUM8 ,
CNUM9 ,
CNUM10 ,
CNUM11 ,
C_COUNT ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM( SELECT
CY.*,
QX.*
FROM
(
SELECT
--GROUPING_ID(P.GOODSNAME,U.USERCODE) AS GID,
DECODE( GROUPING_ID ( P.GOODSNAME, U.USERCODE ), 3, '[合计]', P.GOODSNAME ) AS GOODSNAME_FRONT,
U.USERCODE AS USERCODE_FRONT,
COUNT( * ) AS OUT_COUNT ,
P.PROCEDUREID AS PROCEDUREID_CHECK_FRONT,
P.USERCODE AS USERCODE_CHECK_FRONT
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND U.PROCEDUREID IN ( 8,0 )
WHERE
P.CHECKFLAG = 1
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <=@DATEEND@
GROUP BY
GROUPING SETS ( ( P.GOODSNAME, U.USERCODE,P.PROCEDUREID,P.USERCODE ), (P.PROCEDUREID,P.USERCODE) )
) CY
LEFT JOIN (
SELECT
*
FROM
(
SELECT
DECODE( GID, 14, '[合计]', 15, '[合计]',产品 ) AS GOODSNAME_BEHIND,
工号 AS USERCODE_BEHIND,
DECODE( GID, 3, '合计', 15, '合计',缺陷名称 ) 缺陷名称,
缺陷数 ,
pro AS PROCEDUREID_CHECK_BEHIND,
us AS USERCODE_CHECK_BEHIND
FROM
(
SELECT
GROUPING_ID ( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME ) AS GID,
P.GOODSNAME AS 产品,
U.USERCODE AS 工号,
D.DEFECTPROCEDUREID AS 责任工序,
D.DEFECTNAME AS 缺陷名称,
COUNT( * ) AS 缺陷数 ,
P.PROCEDUREID AS pro,
P.USERCODE AS us
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECTGROUP G ON INSTR( G.DEFECTGROUPTYPE, '大帐' ) = 1
AND G.DEFECTGROUPNAME = '烧窑缺陷'
AND D.DEFECTID = G.DEFECTID
AND ( D.DEFECTPROCEDUREID IN ( 8,0 ) )
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND ( U.PROCEDUREID IN ( 8,0 ) )
WHERE
P.VALUEFLAG = '1'
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <=@DATEEND@
GROUP BY
GROUPING SETS (
( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME , P.PROCEDUREID ,P.USERCODE),
( P.GOODSNAME, U.USERCODE, P.PROCEDUREID ,P.USERCODE ),
( D.DEFECTNAME, P.PROCEDUREID ,P.USERCODE ),
( P.PROCEDUREID ,P.USERCODE )
)
)
) PIVOT (
SUM( 缺陷数 ) FOR 缺陷名称 IN (
'桔釉' AS CNUM1,'烧裂' AS CNUM2,'烧生' AS CNUM3,'烧炸' AS CNUM4,'过火泡' AS CNUM5,'针孔' AS CNUM6,'麻坑' AS CNUM7,'窑脏' AS CNUM8,'烟熏' AS CNUM9,'风惊' AS CNUM10,'水滴' AS CNUM11,'合计' AS C_COUNT
)
)
) QX ON CY.GOODSNAME_FRONT = QX.GOODSNAME_BEHIND
AND ( CY.USERCODE_FRONT = QX.USERCODE_BEHIND OR CY.USERCODE_FRONT IS NULL )
AND CY.PROCEDUREID_CHECK_FRONT = QX.PROCEDUREID_CHECK_BEHIND And CY.USERCODE_CHECK_FRONT = QX.USERCODE_CHECK_BEHIND
) ";
string sqlStr4 = @" INSERT INTO JZ_RPT035_04
SELECT
sys_guid(),
USERCODE_CHECK_FRONT ,
OUT_COUNT ,
PROCEDUREID_CHECK_FRONT ,
USERCODE_FRONT ,
GOODSNAME_FRONT ,
GOODSNAME_BEHIND ,
USERCODE_BEHIND ,
PROCEDUREID_CHECK_BEHIND ,
USERCODE_CHECK_BEHIND ,
CNUM1 ,
CNUM2 ,
CNUM3 ,
CNUM4 ,
CNUM5 ,
CNUM6 ,
CNUM7 ,
CNUM8 ,
CNUM9 ,
CNUM10 ,
C_COUNT ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM( SELECT
CY.*,
QX.*
FROM
(
SELECT
--GROUPING_ID(P.GOODSNAME,U.USERCODE) AS GID,
DECODE( GROUPING_ID ( P.GOODSNAME, U.USERCODE ), 3, '[合计]', P.GOODSNAME ) AS GOODSNAME_FRONT,
U.USERCODE AS USERCODE_FRONT,
COUNT( * ) AS OUT_COUNT ,
P.PROCEDUREID AS PROCEDUREID_CHECK_FRONT,
P.USERCODE AS USERCODE_CHECK_FRONT
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND U.PROCEDUREID IN ( 30,6 )
WHERE
P.CHECKFLAG = 1
AND P.CREATETIME >=@DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS ( ( P.GOODSNAME, U.USERCODE,P.PROCEDUREID,P.USERCODE ), (P.PROCEDUREID,P.USERCODE) )
) CY
LEFT JOIN (
SELECT
*
FROM
(
SELECT
DECODE( GID, 14, '[合计]', 15, '[合计]',产品 ) AS GOODSNAME_BEHIND,
工号 AS USERCODE_BEHIND,
DECODE( GID, 3, '合计', 15, '合计',缺陷名称 ) 缺陷名称,
缺陷数 ,
pro AS PROCEDUREID_CHECK_BEHIND,
us AS USERCODE_CHECK_BEHIND
FROM
(
SELECT
GROUPING_ID ( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME ) AS GID,
P.GOODSNAME AS 产品,
U.USERCODE AS 工号,
D.DEFECTPROCEDUREID AS 责任工序,
D.DEFECTNAME AS 缺陷名称,
COUNT( * ) AS 缺陷数 ,
P.PROCEDUREID AS pro,
P.USERCODE AS us
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECTGROUP G ON INSTR( G.DEFECTGROUPTYPE, '大帐' ) = 1
AND G.DEFECTGROUPNAME = '施釉缺陷'
AND D.DEFECTID = G.DEFECTID
AND ( D.DEFECTPROCEDUREID IN ( 30,6 ) )
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND ( U.PROCEDUREID IN ( 30,6 ) )
WHERE
P.VALUEFLAG = '1'
AND P.CREATETIME >= @DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS (
( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME , P.PROCEDUREID ,P.USERCODE),
( P.GOODSNAME, U.USERCODE, P.PROCEDUREID ,P.USERCODE ),
( D.DEFECTNAME, P.PROCEDUREID ,P.USERCODE ),
( P.PROCEDUREID ,P.USERCODE )
)
)
) PIVOT (
SUM( 缺陷数 ) FOR 缺陷名称 IN (
'爆釉' AS CNUM1,'脱釉' AS CNUM2,'釉磕' AS CNUM3,'釉粘' AS CNUM4,'釉薄' AS CNUM5,'波纹' AS CNUM6,'釉脏' AS CNUM7,'标不良' AS CNUM8,'釉绺' AS CNUM9,'釉泡' AS CNUM10,'合计' AS C_COUNT
)
)
) QX ON CY.GOODSNAME_FRONT = QX.GOODSNAME_BEHIND
AND ( CY.USERCODE_FRONT = QX.USERCODE_BEHIND OR CY.USERCODE_FRONT IS NULL )
AND CY.PROCEDUREID_CHECK_FRONT = QX.PROCEDUREID_CHECK_BEHIND And CY.USERCODE_CHECK_FRONT = QX.USERCODE_CHECK_BEHIND
) ";
string sqlStr5 = @" INSERT INTO JZ_RPT035_06
SELECT
sys_guid(),
USERCODE_CHECK_FRONT ,
OUT_COUNT ,
PROCEDUREID_CHECK_FRONT ,
USERCODE_FRONT ,
GOODSNAME_FRONT ,
GOODSNAME_BEHIND ,
USERCODE_BEHIND ,
PROCEDUREID_CHECK_BEHIND ,
USERCODE_CHECK_BEHIND ,
CNUM1 ,
CNUM2 ,
C_COUNT ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM( SELECT
CY.*,
QX.*
FROM
(
SELECT
--GROUPING_ID(P.GOODSNAME,U.USERCODE) AS GID,
DECODE( GROUPING_ID ( P.GOODSNAME, U.USERCODE ), 3, '[合计]', P.GOODSNAME ) AS GOODSNAME_FRONT,
U.USERCODE AS USERCODE_FRONT,
COUNT( * ) AS OUT_COUNT ,
P.PROCEDUREID AS PROCEDUREID_CHECK_FRONT,
P.USERCODE AS USERCODE_CHECK_FRONT
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND U.PROCEDUREID IN ( 9,0 )
WHERE
P.CHECKFLAG = 1
AND P.CREATETIME >=@DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS ( ( P.GOODSNAME, U.USERCODE,P.PROCEDUREID,P.USERCODE ), (P.PROCEDUREID,P.USERCODE) )
) CY
LEFT JOIN (
SELECT
*
FROM
(
SELECT
DECODE( GID, 14, '[合计]', 15, '[合计]',产品 ) AS GOODSNAME_BEHIND,
工号 AS USERCODE_BEHIND,
DECODE( GID, 3, '合计', 15, '合计',缺陷名称 ) 缺陷名称,
缺陷数 ,
pro AS PROCEDUREID_CHECK_BEHIND,
us AS USERCODE_CHECK_BEHIND
FROM
(
SELECT
GROUPING_ID ( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME ) AS GID,
P.GOODSNAME AS 产品,
U.USERCODE AS 工号,
D.DEFECTPROCEDUREID AS 责任工序,
D.DEFECTNAME AS 缺陷名称,
COUNT( * ) AS 缺陷数 ,
P.PROCEDUREID AS pro,
P.USERCODE AS us
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECTGROUP G ON INSTR( G.DEFECTGROUPTYPE, '大帐' ) = 1
AND G.DEFECTGROUPNAME = '卸窑缺陷'
AND D.DEFECTID = G.DEFECTID
AND ( D.DEFECTPROCEDUREID IN ( 9,0 ) )
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND ( U.PROCEDUREID IN ( 9,0 ) )
WHERE
P.VALUEFLAG = '1'
AND P.CREATETIME >=@DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS (
( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME , P.PROCEDUREID ,P.USERCODE),
( P.GOODSNAME, U.USERCODE, P.PROCEDUREID ,P.USERCODE ),
( D.DEFECTNAME, P.PROCEDUREID ,P.USERCODE ),
( P.PROCEDUREID ,P.USERCODE )
)
)
) PIVOT (
SUM( 缺陷数 ) FOR 缺陷名称 IN (
'出磕' AS CNUM1,'划釉' AS CNUM2,'合计' AS C_COUNT
)
)
) QX ON CY.GOODSNAME_FRONT = QX.GOODSNAME_BEHIND
AND ( CY.USERCODE_FRONT = QX.USERCODE_BEHIND OR CY.USERCODE_FRONT IS NULL )
AND CY.PROCEDUREID_CHECK_FRONT = QX.PROCEDUREID_CHECK_BEHIND And CY.USERCODE_CHECK_FRONT = QX.USERCODE_CHECK_BEHIND
) ";
string sqlStr6 = @" INSERT INTO JZ_RPT035_03
SELECT
sys_guid(),
USERCODE_CHECK_FRONT ,
OUT_COUNT ,
PROCEDUREID_CHECK_FRONT ,
USERCODE_FRONT ,
GOODSNAME_FRONT ,
GOODSNAME_BEHIND ,
USERCODE_BEHIND ,
PROCEDUREID_CHECK_BEHIND ,
USERCODE_CHECK_BEHIND ,
CNUM1 ,
CNUM2 ,
CNUM3 ,
CNUM4 ,
CNUM5 ,
CNUM6 ,
CNUM7 ,
CNUM8 ,
CNUM9 ,
CNUM10 ,
C_COUNT ,
to_number(to_char(@YEAR@) || lpad(to_char(@I@),2,'0'))
FROM(SELECT
CY.*,
QX.*
FROM
(
SELECT
--GROUPING_ID(P.GOODSNAME,U.USERCODE) AS GID,
DECODE( GROUPING_ID ( P.GOODSNAME, U.USERCODE ), 3, '[合计]', P.GOODSNAME ) AS GOODSNAME_FRONT,
U.USERCODE AS USERCODE_FRONT,
COUNT( * ) AS OUT_COUNT ,
P.PROCEDUREID AS PROCEDUREID_CHECK_FRONT,
P.USERCODE AS USERCODE_CHECK_FRONT
FROM
TP_PM_PRODUCTIONDATA P
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND U.PROCEDUREID IN ( 33,16 )
WHERE
P.CHECKFLAG = 1
AND P.CREATETIME >=@DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS ( ( P.GOODSNAME, U.USERCODE,P.PROCEDUREID,P.USERCODE ), (P.PROCEDUREID,P.USERCODE) )
) CY
LEFT JOIN (
SELECT
*
FROM
(
SELECT
DECODE( GID, 14, '[合计]', 15, '[合计]',产品 ) AS GOODSNAME_BEHIND,
工号 AS USERCODE_BEHIND,
DECODE( GID, 3, '合计', 15, '合计',缺陷名称 ) 缺陷名称,
缺陷数 ,
pro AS PROCEDUREID_CHECK_BEHIND,
us AS USERCODE_CHECK_BEHIND
FROM
(
SELECT
GROUPING_ID ( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME ) AS GID,
P.GOODSNAME AS 产品,
U.USERCODE AS 工号,
D.DEFECTPROCEDUREID AS 责任工序,
D.DEFECTNAME AS 缺陷名称,
COUNT( * ) AS 缺陷数 ,
P.PROCEDUREID AS pro,
P.USERCODE AS us
FROM
TP_PM_PRODUCTIONDATA P
LEFT JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = P.PRODUCTIONDATAID
INNER JOIN TP_MST_DEFECTGROUP G ON INSTR( G.DEFECTGROUPTYPE, '大帐' ) = 1
AND G.DEFECTGROUPNAME = '循环线施釉缺陷'
AND D.DEFECTID = G.DEFECTID
AND ( D.DEFECTPROCEDUREID IN ( 33,16 ) )
INNER JOIN TP_PM_PRODUCTIONDATA U ON U.BARCODE = P.BARCODE
AND U.VALUEFLAG = '1'
AND ( U.PROCEDUREID IN ( 33,16 ) )
WHERE
P.VALUEFLAG = '1'
AND P.CREATETIME >=@DATEBEGIN@
AND P.CREATETIME <= @DATEEND@
GROUP BY
GROUPING SETS (
( P.GOODSNAME, U.USERCODE, D.DEFECTPROCEDUREID, D.DEFECTNAME , P.PROCEDUREID ,P.USERCODE),
( P.GOODSNAME, U.USERCODE, P.PROCEDUREID ,P.USERCODE ),
( D.DEFECTNAME, P.PROCEDUREID ,P.USERCODE ),
( P.PROCEDUREID ,P.USERCODE )
)
)
) PIVOT (
SUM( 缺陷数 ) FOR 缺陷名称 IN (
'爆釉' AS CNUM1,'脱釉' AS CNUM2,'釉磕' AS CNUM3,'釉粘' AS CNUM4,'釉薄' AS CNUM5,'波纹' AS CNUM6,'釉脏' AS CNUM7,'标不良' AS CNUM8,'釉绺' AS CNUM9,'釉泡' AS CNUM10,'合计' AS C_COUNT
)
)
) QX ON CY.GOODSNAME_FRONT = QX.GOODSNAME_BEHIND
AND ( CY.USERCODE_FRONT = QX.USERCODE_BEHIND OR CY.USERCODE_FRONT IS NULL )
AND CY.PROCEDUREID_CHECK_FRONT = QX.PROCEDUREID_CHECK_BEHIND And CY.USERCODE_CHECK_FRONT = QX.USERCODE_CHECK_BEHIND
)";
List sqlPara = new List();
sqlPara.Add(new CDAParameter("I", i));
sqlPara.Add(new CDAParameter("YEAR", b));
sqlPara.Add(new CDAParameter("DATEEND", dayEnd));
sqlPara.Add(new CDAParameter("DATEBEGIN", dayBegin));
result = conn.ExecuteNonQuery(sqlStr1, sqlPara.ToArray());
result1 = conn.ExecuteNonQuery(sqlStr2, sqlPara.ToArray());
result2 = conn.ExecuteNonQuery(sqlStr3, sqlPara.ToArray());
result3 = conn.ExecuteNonQuery(sqlStr4, sqlPara.ToArray());
result4 = conn.ExecuteNonQuery(sqlStr5, sqlPara.ToArray());
result5 = conn.ExecuteNonQuery(sqlStr6, sqlPara.ToArray());
}
conn.Commit();
if (result > 0 || result1 > 0 || result2 > 0 || result3 > 0 || result4 > 0 || result5 > 0)
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export035成检大帐结转成功!");
}
else
{
Curtain.Log.Logger.Debug(b + "年" + a + "月:export035成检大帐结转0条!");
}
}
catch (Exception ex)
{
conn.Rollback();
Curtain.Log.Logger.Debug(DateTime.Now.AddMonths(-1).Year.ToString() + "年" + DateTime.Now.AddMonths(-1).Month + "月:export035成检大帐结转失败!");
Curtain.Log.Logger.Error(ex);
}
finally
{
conn.Close();
}
}
}
#endregion
#region 新增结转
#endregion
///
/// 在指定日期内有几个星期几
/// days 小于1时,返回 -1
/// weeks 未指定时,默认星期日
///
///
///
///
///
public static int DayOfWeeksInDays(DateTime beginDate, int days, DayOfWeek week)
{
if (days < 1)
{
return -1;
}
DayOfWeek dw = beginDate.DayOfWeek;
int ws = (days + (int)dw - (int)week - 1) / 7;
if (dw <= week)
{
ws += 1;
}
return ws;
}
///
/// 在指定日期内有几个星期几
/// endDate 小于 beginDate 时,返回 -1
/// weeks 未指定时,默认星期日
///
///
///
///
///
public static int DayOfWeeksInDays(DateTime beginDate, DateTime endDate, DayOfWeek week)
{
return DayOfWeeksInDays(beginDate, (endDate.Date - beginDate.Date).Days + 1, week);
}
}