using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ICSSoft.Frame.Data.DAL
{
using ICSSoft.Frame.Data.Entity;
using ICSSoft.Base.Config.DBHelper;
using ICSSoft.Base.Config.AppConfig;
using System.Data.SqlClient;
public class ICSWorkReportDAL
{
///
/// 报工人送检记录
///
///
///
///
///
///
/// TRUE不包含复检
/// TRUE,当前开工记录;FALSE,此人多次开工全部记录
/// TRUE,参与计算
///
public static DataTable Record_Songjian4User(string LOTNO, string ROUTECODE, string OPCODE, string MUSER, string WorkPoint, bool OnlyEnable, bool notEnd, bool OnlyCalc)
{
string sql = @"
SELECT
'' AS Selected,
'' AS CancelSongjian,
A.TransNO,
ISNULL(A.UserCode,'') AS UserCode,
ISNULL(B.UserName,'') AS UserName,
A.CheckMode,
A.Quantity,
A.MTIME,
C.BeginDateTime,
C.EndDateTime,
CASE C.[Status]
WHEN '正常' THEN 'OK'
WHEN '放行' THEN 'OK'
WHEN '判退' THEN 'NG'
WHEN '不良' THEN 'NG'
WHEN '开始' THEN '检验中'
ELSE '未开始' END AS [Status],
C.[Enable],
ISNULL(D.SetValue,0) NGQTY,
A.IsCalc
FROM dbo.ICSLOTONWIPInspection A
LEFT JOIN dbo.Sys_User B ON A.UserCode=B.UserCode AND A.WorkPoint=B.WorkPointCode
LEFT JOIN dbo.ICSLOTONWIPCheck C ON C.FORTRANID=A.ID --==--
LEFT JOIN dbo.ICSLOTONWIPCheckDetail D ON D.FORTRANID=C.ID AND D.TYPE='不良'
LEFT JOIN dbo.ICSLOTONWIPDetail E ON E.ID=A.DetailID
WHERE E.LOTNO='{0}' AND E.ROUTECODE='{1}' AND E.OPCODE='{2}' AND E.MUSER='{3}' AND A.WorkPoint='{4}' {5}
ORDER BY A.TransNO
";
string extCondition = "";
if (OnlyEnable)
{
sql.Replace("--==--", " and C.Enable=1");
}
if (notEnd)
{
extCondition += " AND E.CollectStatus<>'COLLECT_END'";
}
if (OnlyCalc)
{
extCondition += " AND A.IsCalc=1";
}
sql = string.Format(sql, LOTNO, ROUTECODE, OPCODE, MUSER, WorkPoint, extCondition);
return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
}
///
/// 报工人当次送检/巡检记录,与上方法notEnd=true时结果相同
///
///
///
///
///
///
public static DataTable Record_Songjian4User(string wipdetID, bool OnlyEnable, bool OnlyCalc)
{
string sql = @"
SELECT
'' AS Selected,
'' AS CancelSongjian,
A.TransNO,
ISNULL(A.UserCode,'') AS UserCode,
ISNULL(B.UserName,'') AS UserName,
A.CheckMode,
A.Quantity,
A.MTIME,
C.BeginDateTime,
C.EndDateTime,
CASE C.[Status]
WHEN '正常' THEN 'OK'
WHEN '放行' THEN 'OK'
WHEN '判退' THEN 'NG'
WHEN '不良' THEN 'NG'
WHEN '开始' THEN '检验中'
ELSE '未开始' END AS [Status],
C.[Enable],
ISNULL(D.SetValue,0) NGQTY,
A.IsCalc
FROM dbo.ICSLOTONWIPDetail E
LEFT JOIN dbo.ICSLOTONWIPInspection A ON E.ID=A.DetailID
LEFT JOIN dbo.Sys_User B ON A.UserCode=B.UserCode AND A.WorkPoint=B.WorkPointCode
LEFT JOIN dbo.ICSLOTONWIPCheck C ON C.FORTRANID=A.ID --==--
LEFT JOIN dbo.ICSLOTONWIPCheckDetail D ON D.FORTRANID=C.ID AND D.TYPE='不良'
WHERE E.ID='{0}' AND a.ID IS NOT null
ORDER BY A.TransNO
";
string extCondition = "";
if (OnlyEnable)
{
sql.Replace("--==--", " and C.Enable=1");
}
if (OnlyCalc)
{
extCondition += " AND A.IsCalc=1";
}
sql = string.Format(sql, wipdetID, extCondition);
return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
}
public static DataTable Record_Songjian4UserAll(string wipdetID, bool OnlyEnable, bool OnlyCalc)
{
string sql = @"
SELECT
'' AS Selected,
'' AS CancelSongjian,
A.TransNO,
ISNULL(A.UserCode,'') AS UserCode,
ISNULL(B.UserName,'') AS UserName,
A.CheckMode,
A.Quantity,
A.MTIME,
C.BeginDateTime,
C.EndDateTime,
CASE C.[Status]
WHEN '正常' THEN 'OK'
WHEN '放行' THEN 'OK'
WHEN '判退' THEN 'NG'
WHEN '不良' THEN 'NG'
WHEN '开始' THEN '检验中'
ELSE '未开始' END AS [Status],
C.[Enable],
ISNULL(D.SetValue,0) NGQTY,
A.IsCalc,
NCR.Status AS NcrStatus,
NCR.UpDateTime,
NCR.DownDateTime
FROM dbo.ICSLOTONWIPDetail E
LEFT JOIN dbo.ICSLOTONWIPInspection A ON E.ID=A.DetailID {1}
LEFT JOIN dbo.Sys_User B ON A.UserCode=B.UserCode AND A.WorkPoint=B.WorkPointCode
LEFT JOIN dbo.ICSLOTONWIPCheck C ON C.FORTRANID=A.ID {2}
LEFT JOIN dbo.ICSLOTONWIPCheckDetail D ON D.FORTRANID=C.ID AND D.TYPE='不良'
LEFT JOIN dbo.ICSLOTONWIPCheckNCR NCR ON NCR.CheckID=D.ID
WHERE E.ID='{0}' AND a.ID IS NOT null
ORDER BY A.TransNO
";
string ex1 = "";
string ex2 = "";
if (OnlyCalc)
{
ex1 = " AND A.IsCalc=1";
}
if (OnlyEnable)
{
ex2 = " AND C.Enable=1";
}
sql = string.Format(sql, wipdetID, ex1, ex2);
return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
}
public static DataTable QueryQtySongjian4OP(string wipID)
{
//2022-03-16 +送检,检验未出结果逻辑
string sql = @"
SELECT
ISNULL(SUM(CONVERT(INT,ISNULL(A.Quantity,0))),0) AS SJQTY,
ISNULL(SUM(CONVERT(INT,ISNULL(C.SetValue,0))),0) AS SJNGQTY,
ISNULL(SUM(CASE WHEN A.ID IS NOT NULL AND B.EndDateTime IS NULL THEN CONVERT(INT,A.Quantity) ELSE 0 END),0) AS SJNotFinishQTY
FROM [dbo].[ICSLOTONWIP] WIP
INNER JOIN [dbo].[ICSLOTONWIPDetail] WIPD
ON WIPD.LOTNO=WIP.LOTNO AND WIPD.LOTSEQ=WIP.LOTSEQ AND WIPD.ROUTECODE=WIP.ROUTECODE AND WIPD.OPCODE=WIP.OPCODE
LEFT JOIN [dbo].[ICSLOTONWIPInspection] A ON A.DetailID=WIPD.ID AND A.IsCalc=1
LEFT JOIN dbo.ICSLOTONWIPCheck B ON B.FORTRANID=A.ID AND B.Enable=1
LEFT JOIN dbo.ICSLOTONWIPCheckDetail C ON C.FORTRANID=B.ID AND C.TYPE='不良'
WHERE
WIP.ID='{0}'
";
sql = string.Format(sql, wipID);
return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
}
public static DataTable QueryQtySongjian4OPAll(string wipID)
{
//2022-03-22 送检允许ncr让步接受,此处逻辑修改
string sql = @"
SELECT
ISNULL(SUM(SJQTY),0) SJQTY,
ISNULL(SUM(SJNGQTY),0) SJNGQTY,
ISNULL(SUM(SJOKQTY),0) SJOKQTY,
ISNULL(SUM(SJNotFinishQTY),0) SJNotFinishQTY,
ISNULL(SUM(NCRQTY),0) NCRQTY,
ISNULL(SUM(NCRNGQTY),0) NCRNGQTY,
ISNULL(SUM(NCROKQTY),0) NCROKQTY,
ISNULL(SUM(NCRNotFinishQTY),0) NCRNotFinishQTY
FROM (
SELECT
WIP.ID,
A.TransNO,
ISNULL(MAX(CONVERT(INT,ISNULL(A.Quantity,0))),0) AS SJQTY,
ISNULL(SUM(CONVERT(INT,ISNULL(C.SetValue,0))),0) AS SJNGQTY,
ISNULL(MAX(CONVERT(INT,ISNULL(A.Quantity,0))),0)
-ISNULL(SUM(CONVERT(INT,ISNULL(C.SetValue,0))),0)
-ISNULL(SUM(CASE WHEN A.ID IS NOT NULL AND B.EndDateTime IS NULL THEN CONVERT(INT,A.Quantity) ELSE 0 END),0) AS SJOKQTY,
ISNULL(SUM(CASE WHEN A.ID IS NOT NULL AND B.EndDateTime IS NULL THEN CONVERT(INT,A.Quantity) ELSE 0 END),0) AS SJNotFinishQTY,
ISNULL(SUM(CASE WHEN B.EndDateTime IS NOT NULL AND NCR.ID IS NOT NULL THEN CONVERT(INT,ISNULL(C.SetValue,0)) ELSE 0 END),0) NCRQTY,
ISNULL(SUM(CASE WHEN B.EndDateTime IS NOT NULL AND NCR.ID IS NOT NULL AND NCR.DownDateTime IS NOT NULL AND NCR.Status='让步接受' THEN CONVERT(INT,ISNULL(C.SetValue,0)) ELSE 0 END),0) NCROKQTY,
ISNULL(SUM(CASE WHEN B.EndDateTime IS NOT NULL AND NCR.ID IS NOT NULL AND NCR.DownDateTime IS NOT NULL AND NCR.Status<>'让步接受' THEN CONVERT(INT,ISNULL(C.SetValue,0)) ELSE 0 END),0) NCRNGQTY,
ISNULL(SUM(CASE WHEN B.EndDateTime IS NOT NULL AND B.Status<>'正常' AND B.Status<>'放行' AND NCR.DownDateTime IS NULL THEN CONVERT(INT,ISNULL(C.SetValue,0)) ELSE 0 END),0) NCRNotFinishQTY
FROM [dbo].[ICSLOTONWIP] WIP
INNER JOIN [dbo].[ICSLOTONWIPDetail] WIPD
ON WIPD.LOTNO=WIP.LOTNO AND WIPD.LOTSEQ=WIP.LOTSEQ AND WIPD.ROUTECODE=WIP.ROUTECODE AND WIPD.OPCODE=WIP.OPCODE
LEFT JOIN [dbo].[ICSLOTONWIPInspection] A ON A.DetailID=WIPD.ID AND A.IsCalc=1
LEFT JOIN dbo.ICSLOTONWIPCheck B ON B.FORTRANID=A.ID AND B.Enable=1
LEFT JOIN dbo.ICSLOTONWIPCheckDetail C ON C.FORTRANID=B.ID AND C.TYPE='不良'
LEFT JOIN dbo.ICSLOTONWIPCheckNCR NCR ON NCR.CheckID=C.ID
WHERE
wip.id='{0}'
AND A.ID IS NOT NULL
GROUP BY WIP.ID,a.TransNO
)T
";
sql = string.Format(sql, wipID);
return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
}
///
/// 工序送检/巡检记录
///
///
///
///
///
/// 送检数量,检验NG数量,未检数量
public static DataTable Record_Songjian4OP(string wipID)
{
string sql = @"
SELECT
A.TransNO,
ISNULL(A.UserCode,'') AS UserCode,
ISNULL(B.UserName,'') AS UserName,
A.CheckMode,
A.Quantity,
A.MTIME,
C.BeginDateTime,
C.EndDateTime,
CASE C.[Status]
WHEN '正常' THEN 'OK'
WHEN '放行' THEN 'OK'
WHEN '判退' THEN 'NG'
WHEN '不良' THEN 'NG'
WHEN '开始' THEN '检验中'
ELSE '未开始' END AS [Status],
C.[Enable],
ISNULL(D.SetValue,0) NGQTY,
A.IsCalc
FROM [dbo].[ICSLOTONWIP] WIP
INNER JOIN [dbo].[ICSLOTONWIPDetail] E
ON E.LOTNO=WIP.LOTNO AND E.LOTSEQ=WIP.LOTSEQ AND E.ROUTECODE=WIP.ROUTECODE AND E.OPCODE=WIP.OPCODE
LEFT JOIN [dbo].[ICSLOTONWIPInspection] A ON A.DetailID=E.ID --AND A.IsCalc=1
LEFT JOIN dbo.Sys_User B ON A.UserCode=B.UserCode AND A.WorkPoint=B.WorkPointCode
LEFT JOIN dbo.ICSLOTONWIPCheck C ON C.FORTRANID=A.ID --AND C.Enable=1
LEFT JOIN dbo.ICSLOTONWIPCheckDetail D ON D.FORTRANID=C.ID AND D.TYPE='不良'
WHERE
WIP.ID='{0}' AND a.ID IS NOT NULL
ORDER BY A.TransNO
";
sql = string.Format(sql, wipID);
return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
}
///
/// 首件
///
///
///
///
///
///
///
///
///
///
public static DataTable Shoujian(string codeType, string code, string MOSEQ, string ROUTECODE, string OPCODE, string EQPCode, string WorkPoint, params string[] shoujianTypes)
{
string sql = @"
SELECT
A.ITEMCODE,
A.LOTNO,
A.ROUTECODE,
A.OPCODE,
B.ID,
C.TransNO,
C.CheckMode,
ISNULL(D.Status,'') AS Status
FROM ICSLOTONWIP A
LEFT JOIN dbo.ICSLOTONWIPDetail B ON A.LOTNO=B.LOTNO AND A.ROUTECODE=B.ROUTECODE AND A.OPCODE=B.OPCODE
LEFT JOIN dbo.ICSLOTONWIPInspection C ON C.DetailID=B.ID
LEFT JOIN dbo.ICSLOTONWIPCheck D ON D.FORTRANID=C.ID AND D.[Enable]=1
WHERE
A.ROUTECODE='{1}'
AND A.OPCODE='{2}'
AND B.EQPCode='{3}'
AND 1=1
ORDER BY
C.MTIME DESC
";
//--AND (D.Status='正常' OR D.Status='放行')
string extCondition = "";
if (shoujianTypes == null || shoujianTypes.Length == 0)
{
extCondition = "C.CheckMode LIKE '%首件%' AND";
}
else
{
string[] s1 = new string[shoujianTypes.Length];
for (int i = 0; i < shoujianTypes.Length; i++)
{
s1[i] = "C.CheckMode = '" + shoujianTypes[i] + "' ";
}
extCondition = " ( " + string.Join(" OR ", s1) + " ) AND ";
}
if (codeType == "物料")
{
extCondition += " A.ITEMCODE='{0}' ";
}
else if (codeType == "工单")
{
if (MOSEQ == "")
{
throw new Exception("工单必须输入工单行");
}
extCondition += " A.MOCODE='{0}' AND A.MOSEQ=" + MOSEQ + " ";
}
else if (codeType == "跟踪单")
{
extCondition += " A.LOTNO='{0}' ";
}
else
{
throw new Exception("首件查询, 单据类型错误");
}
sql = sql.Replace("1=1", extCondition);
sql = string.Format(sql, code, ROUTECODE, OPCODE, EQPCode);
return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
}
///
/// 工序报工数量
///
///
///
///
///
/// 报工OK数量,NG=0(阿威特不报NG数量)
public static DataTable WorkReportQTY(string LOTNO, string ROUTECODE, string OPCODE, string WorkPoint)
{
string sql = @"SELECT ISNULL(GOODQTY,0) GOODQTY,ISNULL(NGQTY,0) NGQTY FROM ICSLOTONWIP WHERE LOTNO='{0}' AND ROUTECODE='{1}' AND OPCODE='{2}' AND WorkPoint='{3}'";
sql = string.Format(sql, LOTNO, ROUTECODE, OPCODE, WorkPoint);
DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
if (data.Rows.Count == 0)
{
throw new Exception("此跟踪单'工序开工'记录已被他人删除!");
}
return data;
}
public static DataTable WorkReportQTY(string wipid)
{
string sql = @"SELECT ISNULL(GOODQTY,0) GOODQTY,ISNULL(NGQTY,0) NGQTY FROM ICSLOTONWIP WHERE ID='{0}'";
sql = string.Format(sql, wipid);
DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
if (data.Rows.Count == 0)
{
throw new Exception("此跟踪单'工序开工'记录已被他人删除!");
}
return data;
}
///
/// 所有人送检首件未出结果的数量
///
///
/// 是否包含自己
///
///
public static DataTable SongjianShoujianNotFinishBeforeMe(string wipdetID, bool includeself, params string[] shoujianTypes)
{
string sql = @"
SELECT
ins.Quantity AS NotFinishQTY,ins.CheckMode,ins.TransNO
FROM dbo.ICSLOTONWIPDetail A
LEFT JOIN dbo.ICSLOTONWIPDetail B ON B.LOTNO=A.LOTNO AND B.ROUTECODE=A.ROUTECODE AND B.OPCODE =A.OPCODE AND A.EndDateTime <{1} B.BeginDateTime
LEFT JOIN dbo.ICSLOTONWIPInspection INS ON INS.DetailID=A.ID
LEFT JOIN dbo.ICSLOTONWIPCheck CHK ON CHK.FORTRANID=INS.ID
WHERE B.ID='{0}'
AND CHK.EndDateTime IS NULL
";
string extCondition = "";
if (shoujianTypes == null || shoujianTypes.Length == 0)
{
extCondition = "AND INS.CheckMode LIKE '%首件%'";
}
else
{
string[] s1 = new string[shoujianTypes.Length];
for (int i = 0; i < shoujianTypes.Length; i++)
{
s1[i] = "INS.CheckMode = '" + shoujianTypes[i] + "' ";
}
extCondition = " AND ( " + string.Join(" OR ", s1) + " ) ";
}
sql = string.Format(sql, wipdetID, includeself ? "= " : " ") + extCondition;
return DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
}
public static DataTable QueryLotNoOPCodeSendAndReport(string LOTNO, string OPCODE, string WorkPoint, string AppConnectString)
{
string sql = @"
SELECT
A.ROUTECODE,D.ROUTEDESC,
B.OPSEQ,A.OPCODE,C.OPNAME,C.OPDESC,B.OPCODE AS OPCODE_B,
B.OPAttr,
CASE WHEN A.EATTRIBUTE1=1 THEN '串行' ELSE B.CtrlType END AS CtrlType,
A.USERCODE,A.USERName,A.EQPCode,A.EQPName,
CASE WHEN A.EATTRIBUTE1=1 THEN 'WW' ELSE (CASE WHEN B.OPAttr='自制' THEN 'ZZ' ELSE 'JY' END) END AS OPTYPE,
E.[ACTION],E.ACTIONRESULT AS StateOP,ISNULL(E.LOTQTY,0) LOTQTY,ISNULL(E.GOODQTY,0) GOODQTY,ISNULL(E.NGQTY,0) NGQTY,ISNULL(E.RcvNGQty,0) RcvNGQty,E.ID AS ID_ONWIP
FROM dbo.ICSMO2User A --派工(不做人员,设备卡控)
INNER JOIN dbo.ICSITEMROUTE2OPLot B ON A.LOTNO=B.LOTNO AND B.ROUTECODE=A.RouteCode AND B.OPCODE=A.OPCODE AND B.WorkPoint=A.WorkPoint--跟踪单,工序=>基础信息
LEFT JOIN dbo.ICSOP C ON C.OPCODE=A.OPCODE AND C.WorkPoint=A.WorkPoint
LEFT JOIN dbo.ICSROUTE D ON D.ROUTECODE=A.ROUTECODE AND D.WorkPoint=A.WorkPoint
LEFT JOIN ICSLOTONWIP E ON E.LOTNO=A.LotNo AND E.ROUTECODE=A.RouteCode AND E.OPCODE=A.OPCODE AND E.WorkPoint=A.WorkPoint--跟踪单,工序=>工序状态
WHERE A.LotNo=@LOTNO AND A.OPCODE=@OPCODE AND A.WorkPoint=@WorkPoint
";
SqlParameter[] pms = new SqlParameter[]{
new SqlParameter("@LOTNO",SqlDbType.NVarChar){ Value = LOTNO },
new SqlParameter("@OPCODE",SqlDbType.NVarChar){ Value = OPCODE },
new SqlParameter("@WorkPoint",SqlDbType.NVarChar){ Value = WorkPoint }
};
return DBHelper.ExecuteDataset(AppConnectString, CommandType.Text, sql, pms).Tables[0];
}
public static DataTable QueryPreOPCodeInfo(string LOTNO, int OPSEQ, string WorkPoint, string AppConnectString)
{
string sql = @"
SELECT TOP 1
A.CtrlType
,A.OPCODE
,A.OPSEQ
,C.OPDESC
,ISNULL(B.ACTIONRESULT,'') AS ACTIONRESULT
,B.ID
,B.FPQTY
FROM dbo.ICSITEMROUTE2OPLot A
LEFT JOIN dbo.ICSLOTONWIP B ON B.LOTNO=A.LotNo AND B.OPCODE=A.OPCODE
LEFT JOIN dbo.ICSOP C ON C.OPCODE=A.OPCODE AND C.WorkPoint=A.WorkPoint
WHERE A.LotNo=@LOTNO AND A.OPSEQ<@OPSEQ AND A.WorkPoint=@WorkPoint
ORDER BY A.OPSEQ DESC
";
SqlParameter[] pms = new SqlParameter[]{
new SqlParameter("@LOTNO",SqlDbType.NVarChar){ Value = LOTNO },
new SqlParameter("@OPSEQ",SqlDbType.Int){ Value = OPSEQ },
new SqlParameter("@WorkPoint",SqlDbType.NVarChar){ Value = WorkPoint }
};
return DBHelper.ExecuteDataset(AppConnectString, CommandType.Text, sql, pms).Tables[0];
}
public static DataTable QueryPreOPCheckAndNcrInfo(string ONWIPID, string WorkPoint, string AppConnectString)
{
string sql = @"
SELECT
B.LotNo,
B.ROUTECODE,
B.OPSEQ,
B.OPCODE,
B.ACTIONRESULT,
C.[Status],
C.BeginDateTime,
C.EndDateTime,
D.Status AS NCRStatus
FROM ICSLOTONWIP B
LEFT JOIN dbo.ICSLOTONWIPCheck C ON C.FORTRANID=B.ID AND C.Enable=1
LEFT JOIN dbo.ICSLOTONWIPCheckDetail CD ON CD.FORTRANID=C.ID AND CD.TYPE='不良'
LEFT JOIN dbo.ICSLOTONWIPCheckNCR D ON D.CheckID=CD.ID
WHERE B.ID=@ID AND B.WorkPoint=@WorkPoint
";
SqlParameter[] pms = new SqlParameter[]{
new SqlParameter("@ID",SqlDbType.NVarChar){ Value = ONWIPID },
new SqlParameter("@WorkPoint",SqlDbType.NVarChar){ Value = WorkPoint }
};
return DBHelper.ExecuteDataset(AppConnectString, CommandType.Text, sql, pms).Tables[0];
}
public static DataTable GetBaseOPCode(string OPCODE, string WorkPoint, string AppConnectString)
{
string sql = "";
if (OPCODE.Length == 3)
{
sql = @"
SELECT
OPCODE AS BaseOP,
OPNAME,
CostCenter
FROM dbo.ICSOP WHERE OPCODE=@OPCODE AND WorkPoint=@WorkPoint
";
}
else
{
sql = @"
SELECT TOP 1
A.OPCODE,
B.OPCODE AS BaseOP,
B.OPNAME,
B.CostCenter
FROM dbo.ICSOP A
LEFT JOIN dbo.ICSOP B ON B.OPCODE=LEFT(A.OPCODE,3)
WHERE A.OPCODE=@OPCODE AND A.WorkPoint=@WorkPoint
";
}
SqlParameter[] pms = new SqlParameter[]{
new SqlParameter("@OPCODE", SqlDbType.NVarChar) { Value = OPCODE },
new SqlParameter("@WorkPoint",SqlDbType.NVarChar){ Value = WorkPoint }
};
return DBHelper.ExecuteDataset(AppConnectString, CommandType.Text, sql, pms).Tables[0];
}
}
}