|
|
@@ -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");
|
|
|
|