瀏覽代碼

二检交接,干补后返回6

xuwei 3 年之前
父節點
當前提交
9dc0844274
共有 2 個文件被更改,包括 115 次插入0 次删除
  1. 2 0
      PLC/PLC_S/Core/PLC_S_Core.cs
  2. 113 0
      PLC/PLC_S/ServerModel/GoodsAuto.cs

+ 2 - 0
PLC/PLC_S/Core/PLC_S_Core.cs

@@ -207,6 +207,8 @@ namespace PLC_S
         public string PROCEDURE_USERCODE; //工序工号
         public string PROCEDURE_CHECKID; //工序验证ID
 
+        public string PROCEDURE_DRYREPAIR_ID; //工序计件ID 用于二检交接,干补过给6
+
         public string PROCEDURE_AUTOREFIRE_ID;//工序计件ID 用于重烧成检交接,重烧时,PROCEDURE_AUTO_ID会使用这个值
 
         public string WORKSTATION_ID; //工位ID

+ 113 - 0
PLC/PLC_S/ServerModel/GoodsAuto.cs

@@ -696,6 +696,87 @@ namespace PLC_S.ServerModel
                     }
                     #endregion
 
+                    #region 【可选】工序计件,二检交接,干补过给6,未干补过正常计件
+                    if (!string.IsNullOrEmpty(plc_s.PROCEDURE_DRYREPAIR_ID) && (!string.IsNullOrEmpty(plc_s.PROCEDURE_USERCODE) || !string.IsNullOrEmpty(plc_s.WORKSTATION_ID)))
+                    {
+
+                        string dryRepair = GetDryRepair(barCode, e, logKeyE);
+
+                        if(dryRepair == "0")
+                        {
+                            string p_id = GetFlowId(barCode, e, logKeyE);
+                            Int16 plc_flag = 0;
+                            if (p_id != plc_s.PROCEDURE_DRYREPAIR_ID.ToString())
+                            {
+                                string userCode = "";
+
+                                //默认读取userCode
+                                if (!string.IsNullOrEmpty(plc_s.PROCEDURE_USERCODE))
+                                {
+                                    userCode = plc_s.PROCEDURE_USERCODE;
+                                }
+
+                                //优先从工位取userCode
+                                if (!string.IsNullOrEmpty(plc_s.WORKSTATION_ID))
+                                {
+                                    userCode = GetUserCodeFromWorkStation(plc_s.WORKSTATION_ID, e, logKeyE);
+                                    outputMessage = $"[{e.Content}]DB_UserCode=[{userCode}]";
+                                    Logger.Trace(outputMessage, logKeyT, logger_t);
+                                    FormLogShow?.ShowLog(outputMessage);
+                                }
+
+                                //工序计件
+                                string result = SmartDeviceProxy.Instance.Invoke<string>(
+                                    p => p.AddWorkPieceByStatus3(
+                                        _mes_s.AccountCode,
+                                        userCode,
+                                        null,
+                                        Convert.ToInt32(plc_s.PROCEDURE_DRYREPAIR_ID),
+                                        barCode,
+                                        null));
+
+                                outputMessage = $"[{e.Content}]工序=[{plc_s.PROCEDURE_DRYREPAIR_ID}]工号=[{userCode}]工序计件=[{result}]";
+                                Logger.Trace(outputMessage, logKeyT, logger_t);
+                                FormLogShow?.ShowLog(outputMessage);
+
+                                // 返回状态(成功、失败)
+                                if (result != "OK")
+                                {
+                                    plc_flag = 3;
+                                    if (result == "EE")
+                                    {
+                                        plc_flag = 4;
+                                        outputMessage = $"MES服务端异常(详情参见MES端日志)";
+                                    }
+                                    else if (result == "EU-01")
+                                    {
+                                        outputMessage = $"无效的帐套或工号(详情参见MES端日志)";
+                                    }
+                                    else
+                                    {
+                                        outputMessage = $"其他错误(详情参见MES端日志)[{result}]";
+                                    }
+                                    Logger.Error(null, outputMessage, logKeyT, logger_t);
+                                    Logger.Error(null, outputMessage, logKeyE, logger_e);
+                                    FormLogShow?.ShowLog(outputMessage);
+                                    if (!string.IsNullOrEmpty(plc_s.PLC_IP))
+                                    {
+                                        SendCode(plc_s, e, logKeyT, logKeyE, plc, plc_flag);
+                                    }
+                                    return;
+                                }
+                            }
+                        }
+
+                        if(dryRepair == "1")
+                        {
+                            SendCode(plc_s, e, logKeyT, logKeyE, plc, 6);
+                            return;
+                        }
+
+                    }
+                    #endregion
+
                     #region 【可选】工序计件(产品等级判定为重烧的产品自动重烧交接工序计件)(官塘厂)
                     if (!string.IsNullOrEmpty(plc_s.PROCEDURE_REFIRE_RECIVE_ID) && (!string.IsNullOrEmpty(plc_s.PROCEDURE_REFIRE_RECIVE_USERCODE) ))
                     {
@@ -1284,6 +1365,36 @@ namespace PLC_S.ServerModel
             }
         }
 
+        private string GetDryRepair(string barCode, ReceiveSession e, string loggerName)
+        {
+            try
+            {
+                using (IDataAccess conn = PLC_S_DataAccess.GetDataAccess())
+                {
+                    string sqlStr = @"
+                        SELECT
+	                        CASE WHEN PROCEDUREID = 65 THEN '1' ELSE '0' END AS DRY
+                        FROM
+	                        TP_PM_PRODUCTIONDATA 
+                        WHERE
+	                        BARCODE = @BARCODE@ 
+	                        AND ROWNUM = 1 
+                        ORDER BY
+	                        PRODUCTIONDATAID DESC
+                    ";
+                    object result = conn.ExecuteScalar(sqlStr, new CDAParameter(":BARCODE", barCode));
+                    return result == null ? "0" : result.ToString();
+                }
+            }
+            catch (Exception ex)
+            {
+                Logger.Error(ex, $"[{e.Content}]ERROR-GetDryRepair", loggerName, logger_e);
+                FormLogShow?.ShowLog($"[{e.Content}]ERROR-GetDryRepair={ex.Message}");
+                return "0";
+            }
+
+        }
+
 
         private PLC_S_GA GetPLC_S_GA(string flag, ReceiveSession e, string loggerName)
         {
@@ -1347,6 +1458,8 @@ namespace PLC_S.ServerModel
                     plc_s.PROCEDURE_ID = ini.Read(flag, "PROCEDURE_ID");
                     plc_s.PROCEDURE_USERCODE = ini.Read(flag, "PROCEDURE_USERCODE");
 
+                    plc_s.PROCEDURE_DRYREPAIR_ID = ini.Read(flag, "PROCEDURE_DRYREPAIR_ID");
+
                     plc_s.PROCEDURE_REFIRE_RECIVE_ID = ini.Read(flag, "PROCEDURE_REFIRE_RECIVE_ID");
                     plc_s.PROCEDURE_REFIRE_RECIVE_USERCODE = ini.Read(flag, "PROCEDURE_REFIRE_RECIVE_USERCODE");