/******************************************************************************* * 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 } }