Sfoglia il codice sorgente

修正 回收 之后 产品 可以再次成检(改判),测试条码:19000003880
修正 未通过成型报损的 损坯 仍然可以撤销 报损

xuwei 6 anni fa
parent
commit
2d31d62ee1

+ 55 - 1
DK.Service/PDAModuleLogic/PDAModuleLogic.cs

@@ -945,6 +945,56 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
             }
         }
 
+
+
+        /// <summary>
+        /// xuwei add 2020-03-23 此方法用于成检后 回收 再次成检 获取正确ID
+        /// </summary>
+        /// <param name="searchEntity">生产数据实体类</param>
+        /// <param name="user">用户基本信息</param>
+        /// <returns>DataTable</returns>
+        public static DataTable GetProductionDataCheckID(SearchProductionDataEntity searchEntity, SUserInfo user)
+        {
+            IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
+            string procsql = $@"
+            SELECT
+	            NVL(MAX( T.PRODUCTIONDATAID ),0) AS PRODUCTIONDATAID
+            FROM
+	            TP_PM_PRODUCTIONDATAIN T
+	            INNER JOIN TP_PM_INPRODUCTION INP ON INP.KILNCARBATCHNO = T.KILNCARBATCHNO 
+	            AND T.KILNCARBATCHNO = INP.KILNCARBATCHNO 
+            WHERE
+	            T.MODELTYPE =- 1 
+	            AND T.VALUEFLAG = '1' 
+	            AND T.BARCODE = '{searchEntity.BarCode}'
+            ";
+
+            try
+            {
+                oracleConn.Open();
+                DataSet returnDs = oracleConn.GetSqlResultToDs(procsql);
+                if (returnDs != null && returnDs.Tables.Count > 0)
+                {
+                    return returnDs.Tables[0];
+                }
+                else
+                {
+                    return null;
+                }
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            finally
+            {
+                if (oracleConn.ConnState == ConnectionState.Open)
+                {
+                    oracleConn.Close();
+                }
+            }
+        }
+
         /// <summary>
         /// 根据所选生产数据ID,显示成检数据信息
         /// </summary>
@@ -982,8 +1032,12 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                                     TP_MST_Logo.logocode,
                                     TP_MST_Logo.logoname,
                                     TP_PM_ProductionDataIn.CreateTime,
-                                    TP_PM_ProductionDataIn.CheckTime
+                                    TP_PM_ProductionDataIn.CheckTime,
+									dd.DICTIONARYVALUE as GLAZEName
                                     from TP_PM_ProductionDataIn
+									INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd
+									on gdd.BARCODE = TP_PM_ProductionDataIn.BARCODE
+									left join TP_MST_DATADICTIONARY dd on dd.DICTIONARYID = gdd.GLAZETYPEID
                                     left join TP_MST_Logo
                                     on TP_PM_ProductionDataIn.logoid=TP_MST_Logo.logoid
                                     where 

+ 14 - 4
DK.Service/PMModuleLogic/PMModuleLogicDAL.cs

@@ -9230,6 +9230,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
                 }
                 #endregion
 
+                int isInProduction = 1;
                 #region 修改条码
                 if (productionData.ProductionDataID > 0) //表示编辑条码
                 {
@@ -9270,7 +9271,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
                                     TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
                                     union
                                     select 
-                                    1
+                                    0
                                     from Tp_Pm_Inproductiontrash
                                     where 
                                     Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
@@ -9289,7 +9290,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
                                     TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
                                     union
                                     select 
-                                    1
+                                    0
                                     from Tp_Pm_Inproductiontrash
                                     where 
                                     Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
@@ -9307,6 +9308,8 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
                         return "数据已经被修改,请重新进行编辑";
                     }
 
+                    isInProduction = Convert.ToInt32(returnDataset.Tables[0].Rows[0][0]);
+
                     #endregion
                     //如果原来是 次品 / 废品 xuwei modify 2019-12-13 加入 废品识别
                     if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
@@ -9543,8 +9546,15 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
                     }
                     else
                     {
-                        // 保存报废
-                        errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
+                        if (isInProduction == 1)
+                        {
+                            errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
+                        }
+                        else
+                        {
+                            // 保存报废
+                            errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
+                        }
                     }
                     //不是次品到次品 wangxin 20150417
                     // 保存失败

+ 120 - 12
DK.Service/PMModuleService/PMModuleLogic.cs

@@ -5666,6 +5666,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleService
                                     "    ON sp.BackOutUserID = backOutUser.UserId\n" +
                                     " WHERE sp.ValueFlag = 1\n" +
                                     "   AND sp.AccountID = :in_AccountID";
+
                 List<OracleParameter> paraList = new List<OracleParameter>();
                 paraList.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
                 // 成型报损ID
@@ -5800,6 +5801,92 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleService
         }
 
         /// <summary>
+        /// 获取成型报损信息 用于撤销使用 支持 浆日报直接报损
+        /// </summary>
+        /// <param name="cre"></param>
+        /// <param name="userInfo"></param>
+        /// <returns></returns>
+        public static ServiceResultEntity GetGroutingScrap(ClientRequestEntity cre, SUserInfo userInfo)
+        {
+            IDBConnection conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
+            try
+            {
+                ServiceResultEntity result = new ServiceResultEntity();
+                conn.Open();
+
+                //先从成型报损查询
+                string sqlString = @"
+                    SELECT
+                        S.BARCODE,
+	                    U.USERCODE,
+	                    S.GOODSCODE,
+	                    S.GROUTINGMOULDCODE,
+	                    S.GROUTINGDATE
+                    FROM
+                        TP_PM_GROUTINGSCRAPPRODUCT S
+                        LEFT JOIN TP_MST_USER U ON S.AUDITOR = U.USERID
+                    WHERE
+                        S.VALUEFLAG = '1'
+                        AND S.BARCODE = :in_BarCode
+                ";
+                List<OracleParameter> paraList = new List<OracleParameter>();
+                paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.Varchar2, cre.Properties["BarCode"], ParameterDirection.Input));
+                DataSet dtScrap = conn.GetSqlResultToDs(sqlString, paraList.ToArray());
+
+                //如果没有再从注浆日报损坯标记查询
+                if(dtScrap.Tables[0].Rows.Count==0)
+                {
+                    sqlString = @"
+                        SELECT
+	                        S.BARCODE,
+	                        S.USERCODE,
+	                        S.GOODSCODE,
+	                        S.GROUTINGMOULDCODE,
+	                        S.GROUTINGDATE 
+                        FROM
+	                        TP_PM_GROUTINGDAILYDETAIL S
+                        WHERE
+	                        S.VALUEFLAG = '1'
+	                        AND S.SCRAPFLAG = '1'
+                            AND S.BARCODE = :in_BarCode
+                    ";
+                    dtScrap = conn.GetSqlResultToDs(sqlString, paraList.ToArray());
+                    if (dtScrap.Tables[0].Rows.Count == 0)
+                    {
+                        result.Message = "没查询到报损数据!";
+                        result.Status = Constant.ServiceResultStatus.NoSearchResults;
+                    }
+                    else
+                    {
+                        result.Message = "这是注浆日报报损数据!";
+                        result.Status = Constant.ServiceResultStatus.Success;
+                    }
+                }
+                else
+                {
+                    result.Message = "这是成型报损数据!";
+                    result.Status = Constant.ServiceResultStatus.Success;
+                }
+
+                result.Data = dtScrap;
+                return result;
+
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            finally
+            {
+                if (conn.ConnState == ConnectionState.Open)
+                {
+                    conn.Close();
+                }
+            }
+        }
+
+
+        /// <summary>
         /// 保存成型报损数据
         /// </summary>
         /// <param name="cre"></param>
@@ -6299,7 +6386,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleService
                 oracleTrConn.Connect();
 
                 #region 1、校验该成型报损是否是待审状态
-                sqlString = "SELECT BackOutFlag\n" +
+                sqlString = "SELECT SCRAPPRODUCTID\n" +
                            " FROM TP_PM_GroutingScrapProduct \n" +
                            " WHERE BackOutFlag = '0'\n" +
                            " AND BarCode = :in_BarCode\n";
@@ -6307,14 +6394,30 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleService
                             new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
                 };
                 DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
+                DataTable groutingTable = null;
 
                 // 该产品没有做成型报损
                 if (returnTable.Rows.Count == 0)
                 {
-                    result.Result = -99;
-                    result.Status = Constant.ServiceResultStatus.SystemError;
-                    result.Message = "此产品没有损坯或已被撤销,不能撤销";
-                    return result;
+                    //xuwei add 2020-03-23 再次从注浆表查询报损状态
+                    sqlString = @"
+                        SELECT
+	                        GROUTINGDAILYDETAILID 
+                        FROM
+	                        TP_PM_GROUTINGDAILYDETAIL 
+                        WHERE
+	                        SCRAPFLAG = '0'
+	                        AND VALUEFLAG = '1'
+	                        AND BARCODE = :in_BarCode
+                    ";
+                    groutingTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
+                    if(groutingTable.Rows.Count==0)
+                    {
+                        result.Result = -99;
+                        result.Status = Constant.ServiceResultStatus.SystemError;
+                        result.Message = "此产品没有损坯或已被撤销,不能撤销";
+                        return result;
+                    }
                 }
                 //// 该产品已经做了撤销了
                 //if ("1".Equals(returnTable.Rows[0]["BackOutFlag"]))
@@ -6327,14 +6430,19 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleService
                 #endregion
 
                 #region 2、撤销
-                sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
-                            "   SET BackOutFlag     = :in_BackOutFlag\n" +
-                            "      ,BackOutTime     = :in_BackOutTime\n" +
-                            "      ,BackOutUserID   = :in_BackOutUserID\n" +
-                            "      ,BackOutUserCode = :in_BackOutUserCode\n" +
-                            " WHERE BarCode = :in_BarCode";
+                //xuwei fix 2020-03-23 如果成型报损才更新
+                if(returnTable.Rows.Count>0)
+                {
+                    sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
+                                "   SET BackOutFlag     = :in_BackOutFlag\n" +
+                                "      ,BackOutTime     = :in_BackOutTime\n" +
+                                "      ,BackOutUserID   = :in_BackOutUserID\n" +
+                                "      ,BackOutUserCode = :in_BackOutUserCode\n" +
+                                " WHERE SCRAPPRODUCTID = :in_ScrapProductID";
+                }
+
                 paras = new OracleParameter[] {
-                            new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
+                            new OracleParameter(":in_ScrapProductID",OracleDbType.NVarchar2, returnTable.Rows[0]["SCRAPPRODUCTID"].ToString(), ParameterDirection.Input),
                             new OracleParameter(":in_BackOutFlag",OracleDbType.Int32, Constant.INT_IS_ONE, ParameterDirection.Input),
                             new OracleParameter(":in_BackOutTime",OracleDbType.Date, DateTime.Now, ParameterDirection.Input),
                             new OracleParameter(":in_BackOutUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),

+ 12 - 0
WCF.Service/WCF.Contracts/IPDAModule.cs

@@ -708,6 +708,18 @@ namespace Dongke.IBOSS.PRD.WCF.Contracts
         ActionResult GetProductionData(string accountCode, string userCode, string userPassword, string sessionKey, int ProcedureID, string BarCode);
 
         /// <summary>
+        /// xuwei add 2020-03-23 此方法用于成检后 回收 再次成检 获取正确ID
+        /// </summary>
+        /// <param name="searchEntity">生产数据实体类</param>
+        /// <returns>DataTable</returns>
+        [OperationContract]
+        [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest
+            , ResponseFormat = WebMessageFormat.Json
+            , RequestFormat = WebMessageFormat.Json)]
+        ActionResult GetProductionDataCheckID(string accountCode, string userCode, string userPassword, string sessionKey, string BarCode);
+
+
+        /// <summary>
         /// 根据所选生产数据ID,显示成检数据信息
         /// </summary>
         /// <param name="productionDataID">生产数据ID</param>

+ 4 - 1
WCF.Service/WCF.DataModels/PDAModule/PDAProductionDataResult.cs

@@ -153,7 +153,10 @@ namespace Dongke.IBOSS.PRD.WCF.DataModels
         public string LogoCode { get; set; }
 
         public string LogoName { get; set; }
-
+        /// <summary>
+        /// 釉料名称
+        /// </summary>
+        public string GlazeName { get; set; }
         /// <summary>
         /// 窑车编码
         /// </summary>

+ 64 - 0
WCF.Service/WCF.Services/PDAModuleService.cs

@@ -2355,6 +2355,53 @@ namespace Dongke.IBOSS.PRD.WCF.Services
 		}
 
 		/// <summary>
+		///  xuwei add 2020-03-23 此方法用于成检后 回收 再次成检 获取正确ID
+		/// </summary>
+		/// <param name="searchEntity">生产数据实体类</param>
+		/// <returns>DataTable</returns>
+		public ActionResult GetProductionDataCheckID(string accountCode, string userCode, string userPassword, string sessionKey, string BarCode)
+		{
+			ActionResult actionResult = new ActionResult();
+			try
+			{
+				// 验证请求头信息
+				actionResult = this.DoPDACheck(accountCode, userCode, userPassword, sessionKey);
+
+				// 验证失败
+				if (actionResult.Status != (int)Constant.PDAResult.Success)
+				{
+					return actionResult;
+				}
+				SearchProductionDataEntity searchEntity = new SearchProductionDataEntity();
+				searchEntity.BarCode = BarCode;
+				DataTable reworkDs = ServiceInvoker.Invoke<DataTable>(this,
+				   () => PDAModuleLogic.GetProductionDataCheckID(searchEntity, sUserInfo));
+				if (reworkDs != null && reworkDs.Rows.Count > Constant.INT_IS_ZERO)
+				{
+					actionResult.Result = JsonHelper.ToJson(reworkDs);
+					actionResult.Status = (int)Constant.PDAResult.Success;
+				}
+				else
+				{
+					actionResult.Status = (int)Constant.PDAResult.Fail;
+					actionResult.Message = Constant.PDA_RESULT_ALLOW_ERR;
+				}
+			}
+			catch (Exception ex)
+			{
+				//LogFileOperation.Error(DataManager.LogFileName, ex.Message);
+				OutputLog.TraceLog(LogPriority.Error,
+								this.ToString(),
+								System.Reflection.MethodBase.GetCurrentMethod().Name,
+								ex.ToString(),
+								LocalPath.LogExePath);
+				actionResult.Status = (int)Constant.PDAResult.Exception;
+				actionResult.Message = Constant.PDA_RESULT_EXCEPTION;
+			}
+			return actionResult;
+		}
+
+		/// <summary>
 		/// 根据所选生产数据ID,显示成检数据信息
 		/// </summary>
 		/// <param name="productionDataID">生产数据ID</param>
@@ -2413,6 +2460,7 @@ namespace Dongke.IBOSS.PRD.WCF.Services
 							productionData.IsReFire = Convert.ToInt32(reworkDs.Tables[0].Rows[i]["IsReFire"]);
 							productionData.KilnCarCode = reworkDs.Tables[0].Rows[i]["KilnCarCode"].ToString();
 							productionData.KilnCode = reworkDs.Tables[0].Rows[i]["KilnCode"].ToString();
+							productionData.GlazeName = reworkDs.Tables[0].Rows[i]["GlazeName"].ToString();
 							if (reworkDs.Tables[0].Rows[i]["logoid"].ToString() != "")
 							{
 								productionData.LogoID = Convert.ToInt32(reworkDs.Tables[0].Rows[i]["logoid"]);
@@ -10029,6 +10077,22 @@ namespace Dongke.IBOSS.PRD.WCF.Services
 						actionResult.Status = (int)Constant.PDAResult.Success;
 
 					}
+					//xuwei add 2020-03-23
+					//获取成型报损信息 用于撤销使用 支持 浆日报直接报损
+					else if ("GetGroutingScrap" == action)
+					{
+						ClientRequestEntity cre = new ClientRequestEntity();
+						cre.NameSpace = module;
+						cre.Name = action;
+						if (!string.IsNullOrEmpty(jsonData))
+						{
+							cre.Properties["BarCode"] = data["BarCode"];
+						}
+						ServiceResultEntity sre = Dongke.IBOSS.PRD.Service.PMModuleService.PMModuleLogic.GetGroutingScrap(cre, sUserInfo);
+						actionResult.Result = JsonHelper.ToJson(sre.Data.Tables[0]);
+						actionResult.Status = (int)Constant.PDAResult.Success;
+
+					}
 					// 撤销成型报损
 					else if ("ReverseGroutingScrapProduct" == action)
 					{