|
|
|
|
@ -5,8 +5,10 @@ using System.Data;
|
|
|
|
|
using MySqlConnector;
|
|
|
|
|
using Dapper;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
using CncModels.Entity;
|
|
|
|
|
using CncModels.Dto.CollectLog;
|
|
|
|
|
using CncService.Interface;
|
|
|
|
|
using CncRepository.Interface;
|
|
|
|
|
using CncRepository.Impl.Log;
|
|
|
|
|
using CncRepository.Impl;
|
|
|
|
|
@ -103,30 +105,30 @@ namespace CncService.Impl
|
|
|
|
|
// 简单 JSON 解析,提取每个 device 的信息并写入 cnc_collect_record
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var devices = JsonConvert.DeserializeObject<List<dynamic>>(raw.RawJson);
|
|
|
|
|
foreach (var d in devices)
|
|
|
|
|
var devices = JArray.Parse(raw.RawJson);
|
|
|
|
|
foreach (JObject d in devices)
|
|
|
|
|
{
|
|
|
|
|
string deviceCode = (string)d?.device ?? null;
|
|
|
|
|
string deviceCode = d?.Value<string>("device") ?? null;
|
|
|
|
|
if (string.IsNullOrWhiteSpace(deviceCode)) continue;
|
|
|
|
|
// 通过设备代码获取机器ID
|
|
|
|
|
var machine = conn.QuerySingleOrDefault<CncModels.Entity.Machine>("SELECT id FROM cnc_machine WHERE device_code = @Code", new { Code = deviceCode });
|
|
|
|
|
if (machine == null) continue;
|
|
|
|
|
int machineId = machine.Id;
|
|
|
|
|
var machineId = conn.QuerySingleOrDefault<int?>("SELECT id FROM cnc_machine WHERE device_code = @Code", new { Code = deviceCode });
|
|
|
|
|
if (machineId == null) continue;
|
|
|
|
|
|
|
|
|
|
// 收集 tag 值
|
|
|
|
|
var programName = (string)ExtractTagValue((IEnumerable<dynamic>)d?.tags, "Tag5");
|
|
|
|
|
var partCount = (decimal?)ParseDecimal(ExtractTagValue((IEnumerable<dynamic>)d?.tags, "Tag8"));
|
|
|
|
|
var runStatus = (string)ExtractTagValue((IEnumerable<dynamic>)d?.tags, "Tag9");
|
|
|
|
|
var operateMode = (string)ExtractTagValue((IEnumerable<dynamic>)d?.tags, "Tag11");
|
|
|
|
|
var spindleSet = (decimal?)ParseDecimal(ExtractTagValue((IEnumerable<dynamic>)d?.tags, "Tag17"));
|
|
|
|
|
var spindleActual = (decimal?)ParseDecimal(ExtractTagValue((IEnumerable<dynamic>)d?.tags, "Tag19"));
|
|
|
|
|
var machiningStatus = (string)ExtractTagValue((IEnumerable<dynamic>)d?.tags, "Tag26");
|
|
|
|
|
var tags = d?.Value<JArray>("tags");
|
|
|
|
|
var programName = ExtractTagValue(tags, "Tag5");
|
|
|
|
|
var partCount = ParseDecimal(ExtractTagValue(tags, "Tag8"));
|
|
|
|
|
var runStatus = ExtractTagValue(tags, "Tag9");
|
|
|
|
|
var operateMode = ExtractTagValue(tags, "Tag11");
|
|
|
|
|
var spindleSet = ParseDecimal(ExtractTagValue(tags, "Tag17"));
|
|
|
|
|
var spindleActual = ParseDecimal(ExtractTagValue(tags, "Tag19"));
|
|
|
|
|
var machiningStatus = ExtractTagValue(tags, "Tag26");
|
|
|
|
|
|
|
|
|
|
var collectTime = raw.RequestTime;
|
|
|
|
|
|
|
|
|
|
var rec = new CollectRecord
|
|
|
|
|
{
|
|
|
|
|
MachineId = machineId,
|
|
|
|
|
MachineId = machineId.Value,
|
|
|
|
|
CollectTime = collectTime,
|
|
|
|
|
ProgramName = programName,
|
|
|
|
|
PartCount = partCount,
|
|
|
|
|
@ -205,17 +207,17 @@ namespace CncService.Impl
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// helpers
|
|
|
|
|
private static string ExtractTagValue(IEnumerable<dynamic> tags, string id)
|
|
|
|
|
private static string ExtractTagValue(JArray tags, string id)
|
|
|
|
|
{
|
|
|
|
|
if (tags == null) return null;
|
|
|
|
|
foreach (var t in tags)
|
|
|
|
|
foreach (JObject t in tags)
|
|
|
|
|
{
|
|
|
|
|
if ((string)t?.id == id) return (string)t?.value;
|
|
|
|
|
if (t?.Value<string>("id") == id) return t?.Value<string>("value");
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static object ParseDecimal(string s)
|
|
|
|
|
private static decimal? ParseDecimal(string s)
|
|
|
|
|
{
|
|
|
|
|
if (decimal.TryParse(s, out var d)) return d;
|
|
|
|
|
return null;
|
|
|
|
|
|