feat: 物料扫码记录拆分6段并增加段数异常日志

This commit is contained in:
XingCheng3
2026-05-29 17:23:08 +08:00
parent 1572d62a3d
commit f5203715d1
4 changed files with 156 additions and 9 deletions

View File

@@ -12,6 +12,8 @@ namespace MesServerFunctions
{
/// <summary>
/// PLC物料扫码校验
/// 扫码内容格式:采购订单号|采购行号|物料代码|物料批次号|物料流水号|图号
/// 示例GDD030226032500001|10|123800510000065|20260326|00001|8KA.510.10074
/// </summary>
/// <param name="e"></param>
public void MaterialsVerify(object e)
@@ -35,7 +37,21 @@ namespace MesServerFunctions
int MaterialsTypeCode = Convert.ToInt32(MIS_BASE.ReadPLC(201, OpName));
string MaterialsCode = MIS_BASE.ReadPLC(40, OpName).ToString();
DataTable dt = MisDataFun.XD_MaterialsVerify(OpName, EngineID, MaterialsCode, MaterialsTypeCode);
string purchaseOrderNo = "";
string purchaseLineNo = "";
string materialCode = "";
string materialBatchNo = "";
string materialSerialNo = "";
string drawingNo = "";
int segmentCount = ParseMaterialsCode(MaterialsCode, out purchaseOrderNo, out purchaseLineNo, out materialCode, out materialBatchNo, out materialSerialNo, out drawingNo);
if (segmentCount != 6)
{
string warnMsg = $"【{OpName}】产品:{EngineID} | 物料码:{MaterialsCode} | 物料类型:{MaterialsTypeCode.ToString()} 物料码段数异常({segmentCount})预期6段(采购订单号|采购行号|物料代码|物料批次号|物料流水号|图号)";
MisDataSaveDate.Helper.ApiLogHelper.SaveMesLog(OpName, "MaterialsVerify " + warnMsg, MisDataSaveDate.Helper.MesLogType.ERROR);
}
DataTable dt = MisDataFun.XD_MaterialsVerify(OpName, EngineID, MaterialsCode, MaterialsTypeCode,
purchaseOrderNo, purchaseLineNo, materialCode, materialBatchNo, materialSerialNo, drawingNo);
int result = Convert.ToInt32(dt.Rows[0]["result"]);
if (result == 1)
{
@@ -58,5 +74,34 @@ namespace MesServerFunctions
////ApplicationLog.WriteLog(err, "Function08:EngineTypeGetOver_PLC");
}
}
/// <summary>
/// 解析物料扫码内容
/// 格式:采购订单号|采购行号|物料代码|物料批次号|物料流水号|图号
/// 段数不足时,剩余字段保持为空字符串。
/// </summary>
/// <returns>实际拆分得到的段数</returns>
private static int ParseMaterialsCode(string code,
out string purchaseOrderNo, out string purchaseLineNo, out string materialCode,
out string materialBatchNo, out string materialSerialNo, out string drawingNo)
{
purchaseOrderNo = "";
purchaseLineNo = "";
materialCode = "";
materialBatchNo = "";
materialSerialNo = "";
drawingNo = "";
if (string.IsNullOrEmpty(code)) return 0;
string[] parts = code.Split('|');
if (parts.Length > 0) purchaseOrderNo = parts[0].Trim();
if (parts.Length > 1) purchaseLineNo = parts[1].Trim();
if (parts.Length > 2) materialCode = parts[2].Trim();
if (parts.Length > 3) materialBatchNo = parts[3].Trim();
if (parts.Length > 4) materialSerialNo = parts[4].Trim();
if (parts.Length > 5) drawingNo = parts[5].Trim();
return parts.Length;
}
}
}