/*******************************************************************************
* Copyright(c) 2019 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:PDAModuleLogicWorkShop3.cs
* 2.功能描述:PDA相关处理(三车间专用)。
* 编辑履历:
* 作者 日期 版本 修改内容
* 徐伟 2019/11/05 1.00 新建
*******************************************************************************/
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Basics.DataAccess;
using Dongke.IBOSS.PRD.Service.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
using System;
using System.Data;
namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
{
///
/// 三车间专用接口
///
public partial class PDAModuleLogic
{
#region feiyue add 2022-07-20 装板接口
///
/// 生产工号装具操作权限
///
///
///
///
public static ServiceResultEntity CheckEntruckUser(string functionCode, string currentUserCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
TMUR.FunctionCode
FROM
TP_MST_UserRight TMUR
INNER JOIN TP_MST_USER U ON U.USERID = TMUR.USERID
WHERE
TMUR.FunctionCode = '{functionCode}'
AND u.USERCODE = '{currentUserCode}'
AND u.accountID = {sUser.AccountID}
";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoFunRight;
sre.Message = "工号" + currentUserCode + "无该操作权限!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 获取装具的使用状态
///
///
///
///
public static ServiceResultEntity GetTruckStatus(string entruckingCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
TPE.STATUS
FROM TP_PM_ENTRUCKING TPE
WHERE TPE.VALUEFLAG = '1'
AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
sre.Data.Tables.Add(dt);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效装具条码!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 验证产品条码有效性,及产品与装具的绑定状态
///
///
///
///
public static ServiceResultEntity CheckTruckBarCode(string barCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"select 1 from TP_PM_GroutingDailyDetail where barcode='{barCode}' and valueflag=1";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效条码!";
}
else
{
//产品与装具的绑定状态
sqlStr = $@"
SELECT
TPE.EntruckingCode,TPED.DOFUNCTION
FROM
TP_PM_ENTRUCKING TPE
INNER JOIN TP_PM_EntruckingDetail TPED ON TPE.EntruckingCode = TPED.EntruckingCode
AND TPE.Batch = TPED.Batch
WHERE
TPE.Status = 1 AND
TPED.BARCODE = '{barCode}'
ORDER BY TPED.CREATETIME DESC";
dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count > 0 && (dt.Rows[0]["DOFUNCTION"].Equals("1") || dt.Rows[0]["DOFUNCTION"].Equals("3")))
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "产品" + barCode + "已在装具" + dt.Rows[0]["EntruckingCode"] + "上"; ;
}
else
{
sqlStr = $@"
SELECT
GDD.BARCODE,
G.GOODSCODE,
DECODE(P.PROCEDURENAME,NULL,'成型',P.PROCEDURENAME) PROCEDURENAME,
DECODE(U.USERCODE,NULL,GDD.USERCODE,U.USERCODE) USERCODE
FROM
TP_PM_GROUTINGDAILYDETAIL GDD
LEFT JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = GDD.BARCODE
LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
LEFT JOIN TP_MST_USER U ON U.USERID = IP.USERID
LEFT JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
WHERE
GDD.BARCODE = '{barCode}'";
dt = conn.GetSqlResultToDt(sqlStr);
dt.TableName = "goodsinfo";
sre.Data.Tables.Add(dt);
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 绑定装具
///
///
///
///
///
///
public static ServiceResultEntity AddTruckBarCodes(string barCodes, string entruckingCode, string currentUserCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
int execute = 0;
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
//获取最大批次
sqlStr = $@"SELECT
TPE.BATCH,TPE.STATUS
FROM TP_PM_ENTRUCKING TPE
WHERE TPE.VALUEFLAG = '1'
AND TPE.ENTRUCKINGCODE = '{entruckingCode}'";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效装具条码!";
}
else if (dt.Rows[0]["STATUS"].ToString().Equals("0"))
{
int batch = Convert.ToInt32(dt.Rows[0]["BATCH"]) + 1;
string[] barcodeStr = barCodes.Split(',');
for (int i = 0; i < barcodeStr.Length; i++)
{
//获取产品条码当前工序
sqlStr = $@"
select PROCEDUREID from TP_PM_INPRODUCTION where barcode = '{barcodeStr[i]}'
";
string procedureid = conn.GetSqlResultToStr(sqlStr);
//插入装具明细
sqlStr = $@"
INSERT INTO TP_PM_EntruckingDetail (
ENTRUCKINGCODE,
BARCODE,
BATCH,
DOFUNCTION,
PROCEDUREID,
REMARKS,
ACCOUNTID,
USERID,
USERCODE,
VALUEFLAG,
CREATEUSERID,
UPDATEUSERID )
SELECT
'{entruckingCode}',
'{barcodeStr[i]}',
'{batch}',
1,
'{procedureid}',
'',
'{sUser.AccountID}',
USERID,
'{currentUserCode}',
1,
'{sUser.UserID}',
'{sUser.UserID}'
FROM TP_MST_USER WHERE USERCODE = '{currentUserCode}'
";
execute = conn.ExecuteNonQuery(sqlStr);
}
//修改装具状态
if (execute > 0)
{
sqlStr = $@"UPDATE TP_PM_ENTRUCKING SET STATUS = 1,BATCH = '{batch}' WHERE ENTRUCKINGCODE = '{entruckingCode}' ";
execute = conn.ExecuteNonQuery(sqlStr);
if (execute > 0)
{
conn.Commit();
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作完成!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "操作失败,没有更新任何数据!";
}
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "操作失败,没有更新任何数据!";
}
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "装具不可用!";
}
}
}
catch (Exception ex)
{
conn.Rollback();
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 获取装具上的产品信息
///
///
///
///
public static ServiceResultEntity GetTruckBarCodes(string entruckingCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
TPE.STATUS,TPE.BATCH
FROM TP_PM_ENTRUCKING TPE
WHERE TPE.VALUEFLAG = '1'
AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
sre.Data.Tables.Add(dt);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效装具条码!";
}
else if (dt.Rows[0]["STATUS"].Equals("1"))
{
sqlStr = $@"
SELECT
TT.ENTRUCKINGCODE,
TT.BARCODE,
TT.GOODSCODE,
TT.USERCODE,
TT.PROCEDURENAME,
TT.PROCEDUREID
FROM
(
SELECT
ROW_NUMBER ( ) OVER ( PARTITION BY TD.BARCODE ORDER BY TD.CREATETIME DESC ) RN,
TD.ENTRUCKINGCODE,
TD.BARCODE,
G.GOODSCODE,
DECODE(U.USERCODE,NULL,GDD.USERCODE,U.USERCODE) USERCODE,
DECODE(P.PROCEDURENAME,NULL,'成型',P.PROCEDURENAME) PROCEDURENAME,P.PROCEDUREID,
TD.DOFUNCTION
FROM
TP_PM_ENTRUCKINGDETAIL TD
INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE
AND T.BATCH = TD.BATCH
INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = TD.BARCODE
LEFT JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
LEFT JOIN TP_MST_USER U ON U.USERID = IP.USERID
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
WHERE
TD.ENTRUCKINGCODE = '{entruckingCode}'
AND T.STATUS = '1'
) TT
WHERE
TT.RN = 1
AND ( TT.DOFUNCTION = '1' OR TT.DOFUNCTION = '3' )
";
dt = conn.GetSqlResultToDt(sqlStr);
sre.Data.Tables.Add(dt);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "装具上无产品!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 获取装具上的产品信息
///
///
///
///
public static ServiceResultEntity GetTruckBarCodeses(string entruckingCode, SUserInfo sUser, string addFlag)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
TPE.STATUS,TPE.BATCH
FROM TP_PM_ENTRUCKING TPE
WHERE TPE.VALUEFLAG = '1'
AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
sre.Data.Tables.Add(dt);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效装具条码!";
}
else if (dt.Rows[0]["STATUS"].Equals("1"))
{
sqlStr = $@"
SELECT
TT.ENTRUCKINGCODE,
TT.BARCODE,
TT.GOODSCODE,
TT.USERCODE,
TT.PROCEDURENAME,
TT.PROCEDUREID
FROM
(
SELECT
ROW_NUMBER ( ) OVER ( PARTITION BY TD.BARCODE ORDER BY TD.CREATETIME DESC ) RN,
TD.ENTRUCKINGCODE,
TD.BARCODE,
G.GOODSCODE,
DECODE(U.USERCODE,NULL,GDD.USERCODE,U.USERCODE) USERCODE,
DECODE(P.PROCEDURENAME,NULL,'成型',P.PROCEDURENAME) PROCEDURENAME,P.PROCEDUREID,
TD.DOFUNCTION
FROM
TP_PM_ENTRUCKINGDETAIL TD
INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE
AND T.BATCH = TD.BATCH
INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = TD.BARCODE
LEFT JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
LEFT JOIN TP_MST_USER U ON U.USERID = IP.USERID
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
WHERE
TD.ENTRUCKINGCODE = '{entruckingCode}'
AND T.STATUS = '1'
) TT
WHERE
TT.RN = 1
AND ( TT.DOFUNCTION = '1' OR TT.DOFUNCTION = '3' )
";
dt = conn.GetSqlResultToDt(sqlStr);
sre.Data.Tables.Add(dt);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "装具上无产品!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
}
else
{
if (addFlag == "1")
{
sre.Status = Constant.ServiceResultStatus.Success;
}
else
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "装具未使用";
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 解绑
///
///
///
///
public static ServiceResultEntity UnbindTruckBarCodes(string entruckingCode, string currentUserCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
TPE.STATUS
FROM TP_PM_ENTRUCKING TPE
WHERE TPE.VALUEFLAG = '1'
AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
sre.Data.Tables.Add(dt);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效装具条码!";
}
else if (dt.Rows[0]["STATUS"].Equals("1"))
{
//插入装具明细
sqlStr = $@"
INSERT INTO TP_PM_EntruckingDetail (
ENTRUCKINGCODE,
BARCODE,
BATCH,
DOFUNCTION,
PROCEDUREID,
REMARKS,
ACCOUNTID,
USERID,
USERCODE,
VALUEFLAG,
CREATEUSERID,
UPDATEUSERID )
SELECT
'{entruckingCode}',
TD.BARCODE,
TD.BATCH,
2,
IP.PROCEDUREID,
'',
{sUser.AccountID},
CU.USERID,
'{currentUserCode}',
'1',
{sUser.UserID},
{sUser.UserID}
FROM
TP_PM_ENTRUCKINGDETAIL TD
INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE AND T.BATCH = TD.BATCH
LEFT JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
INNER JOIN TP_MST_USER CU ON CU.USERCODE = '{currentUserCode}' AND CU.VALUEFLAG = '1'
WHERE
TD.ENTRUCKINGCODE = '{entruckingCode}'
AND T.STATUS = '1'
AND (TD.DOFUNCTION = '1' OR TD.DOFUNCTION = '3')
";
int execute = conn.ExecuteNonQuery(sqlStr);
//修改装具状态
sqlStr = $@"UPDATE TP_PM_ENTRUCKING SET STATUS = '0' WHERE ENTRUCKINGCODE = '{entruckingCode}' ";
execute = conn.ExecuteNonQuery(sqlStr);
if (execute > 0)
{
conn.Commit();
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作完成!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "操作失败,没有更新任何数据!";
}
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "装具未使用";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 增补
///
///
///
///
///
///
public static ServiceResultEntity AddTruckBarCode(string barCode, string entruckingCode, string currentUserCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
string addFlag = "1";
string oldprocedureid = string.Empty;
int execute = 0;
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
ServiceResultEntity srOld = GetTruckBarCodeses(entruckingCode, sUser, addFlag);
if (srOld.Status == Constant.ServiceResultStatus.Success)
{
int batch = Convert.ToInt32(srOld.Data.Tables[0].Rows[0]["BATCH"]);
//获取产品条码当前工序
sqlStr = $@"
select PROCEDUREID from TP_PM_INPRODUCTION where barcode = '{barCode}'
";
string procedureid = conn.GetSqlResultToStr(sqlStr);
#region 载具增补修改载具总表的使用状态
// 2023.04.18 fenglinyong ADD
sqlStr = $@"UPDATE TP_PM_ENTRUCKING SET STATUS = 1 WHERE ENTRUCKINGCODE ='{entruckingCode}'";
execute = conn.ExecuteNonQuery(sqlStr);
if (execute > 0)
{
if (srOld.Data != null && srOld.Data.Tables.Count > 1 && srOld.Data.Tables[1] != null)
{
//必须验证产品在同一工序,才允许绑定
oldprocedureid = srOld.Data.Tables[1].Rows[0]["PROCEDUREID"] + "";
}
//插入装具明细
sqlStr = $@"
INSERT INTO TP_PM_EntruckingDetail (
ENTRUCKINGCODE,
BARCODE,
BATCH,
DOFUNCTION,
PROCEDUREID,
REMARKS,
ACCOUNTID,
USERID,
USERCODE,
VALUEFLAG,
CREATEUSERID,
UPDATEUSERID )
SELECT
'{entruckingCode}',
'{barCode}',
'{batch}',
3,
'{procedureid}',
'',
'{sUser.AccountID}',
USERID,
'{currentUserCode}',
1,
'{sUser.UserID}',
'{sUser.UserID}'
FROM TP_MST_USER WHERE USERCODE = '{currentUserCode}'
";
execute = conn.ExecuteNonQuery(sqlStr);
if (execute > 0)
{
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作完成!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "操作失败,没有更新任何数据!";
}
}
else
{
sre.Status = Constant.ServiceResultStatus.NoModifyData;
sre.Message = "操作失败,没有更新任何数据!";
}
#endregion
}
else
{
sre.Status = srOld.Status;
sre.Message = srOld.Message;
}
conn.Commit();
}
}
catch (Exception ex)
{
conn.Rollback();
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 拆减产品
///
///
///
///
public static ServiceResultEntity UnbindTruckBarCode(string barCode, string entruckingCode, string currentUserCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"
SELECT
TPE.STATUS
FROM TP_PM_ENTRUCKING TPE
WHERE TPE.VALUEFLAG = '1'
AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效装具条码!";
}
else if (dt.Rows[0]["STATUS"].Equals("1"))
{
//插入装具明细
sqlStr = $@"
INSERT INTO TP_PM_EntruckingDetail (
ENTRUCKINGCODE,
BARCODE,
BATCH,
DOFUNCTION,
PROCEDUREID,
REMARKS,
ACCOUNTID,
USERID,
USERCODE,
VALUEFLAG,
CREATEUSERID,
UPDATEUSERID )
SELECT
'{entruckingCode}',
TD.BARCODE,
TD.BATCH,
4,
IP.PROCEDUREID,
'',
{sUser.AccountID},
CU.USERID,
'{currentUserCode}',
'1',
{sUser.UserID},
{sUser.UserID}
FROM
TP_PM_ENTRUCKINGDETAIL TD
INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE AND T.BATCH = TD.BATCH
LEFT JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
INNER JOIN TP_MST_USER CU ON CU.USERCODE = '{currentUserCode}' AND CU.VALUEFLAG = '1'
WHERE
TD.ENTRUCKINGCODE = '{entruckingCode}'
AND TD.BARCODE = '{barCode}'
AND T.STATUS = '1'
";
int execute = conn.ExecuteNonQuery(sqlStr);
//查看装具是否有产品,若已无产品,装具自动解绑
sqlStr = $@"
SELECT
TT.ENTRUCKINGCODE,
TT.BARCODE,
TT.GOODSCODE,
TT.USERCODE,
TT.PROCEDURENAME
FROM
(
SELECT
ROW_NUMBER ( ) OVER ( PARTITION BY TD.BARCODE ORDER BY TD.CREATETIME DESC ) RN,
TD.ENTRUCKINGCODE,
TD.BARCODE,
G.GOODSCODE,
DECODE(U.USERCODE,NULL,GDD.USERCODE,U.USERCODE) USERCODE,
DECODE(P.PROCEDURENAME,NULL,'成型',P.PROCEDURENAME) PROCEDURENAME,
TD.DOFUNCTION
FROM
TP_PM_ENTRUCKINGDETAIL TD
INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE
AND T.BATCH = TD.BATCH
INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = TD.BARCODE
LEFT JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
LEFT JOIN TP_MST_USER U ON U.USERID = IP.USERID
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
WHERE
TD.ENTRUCKINGCODE = '{entruckingCode}'
AND T.STATUS = '1'
) TT
WHERE
TT.RN = 1
AND ( TT.DOFUNCTION = '1' OR TT.DOFUNCTION = '3' )
";
dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count == 0)
{
//装具自动解绑
sqlStr = $@"UPDATE TP_PM_ENTRUCKING SET STATUS = '0' WHERE ENTRUCKINGCODE = '{entruckingCode}' ";
execute = conn.ExecuteNonQuery(sqlStr);
}
if (execute > 0)
{
conn.Commit();
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "操作失败,没有更新任何数据!";
}
}
else
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "装具未使用,不可进行拆减";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
///
/// 验证产品条码是否在装具上
///
///
///
///
public static ServiceResultEntity CheckTruckBarCodeForUnbind(string barCode, string entruckingCode, SUserInfo sUser)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Data = new DataSet();
sre.Status = Constant.ServiceResultStatus.Success;
IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlStr = "";
try
{
conn.Connect();
if (sre.Status == Constant.ServiceResultStatus.Success)
{
sqlStr = $@"select 1 from TP_PM_GroutingDailyDetail where barcode = '{barCode}' and valueflag=1";
DataTable dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count == 0)
{
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = "无效条码!";
}
else
{
//产品与装具的绑定状态
sqlStr = $@"
SELECT
TPE.EntruckingCode,TPED.DOFUNCTION
FROM TP_PM_ENTRUCKING TPE
INNER JOIN TP_PM_EntruckingDetail TPED
ON TPE.EntruckingCode = TPED.EntruckingCode
AND TPE.Batch = TPED.Batch
WHERE TPE.Status = 1
AND TPED.BARCODE = '{barCode}'
AND TPED.ENTRUCKINGCODE = '{entruckingCode}'
ORDER BY TPED.CREATETIME DESC";
dt = conn.GetSqlResultToDt(sqlStr);
if (dt.Rows.Count > 0 && (dt.Rows[0]["DOFUNCTION"].Equals("1") || dt.Rows[0]["DOFUNCTION"].Equals("3")))
{
sqlStr = $@"
SELECT
GDD.BARCODE,
G.GOODSCODE,
DECODE(U.USERCODE,NULL,GDD.USERCODE,U.USERCODE) USERCODE,
DECODE(P.PROCEDURENAME,NULL,'成型',P.PROCEDURENAME) PROCEDURENAME
FROM
TP_PM_GROUTINGDAILYDETAIL GDD
LEFT JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = GDD.BARCODE
LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
LEFT JOIN TP_MST_USER U ON U.USERID = IP.USERID
INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
WHERE
GDD.BARCODE = '{barCode}'";
dt = conn.GetSqlResultToDt(sqlStr);
dt.TableName = "goodsinfo";
sre.Data.Tables.Add(dt);
sre.Status = Constant.ServiceResultStatus.Success;
sre.Message = "操作成功!";
}
else
{
sre.Status = Constant.ServiceResultStatus.Other;
sre.Message = "产品" + barCode + "不在装具" + entruckingCode + "上";
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Disconnect();
}
//返回数据
return sre;
}
#endregion
}
}