chenhaozhe
8 天以前 345c2d7083b30becd05755feb048a4b27fb68c7e
WebAPI/Controllers/WebAPIController.cs
@@ -23837,5 +23837,139 @@
            }
        }
        #endregion
        #region 根据设备id获取设备数采数据
        private class EquipTechParam
        {
            public string TechParamName { get; set; }
            public DateTime CreateTime { get; set; }
            public string Result { get; set; }
        }
        [Route("Web/getSB_EquipTechParamBillListByEquipID")]
        [HttpGet]
        public object getSB_EquipTechParamBillListByEquipID(Int64 HEquipID)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                // 工艺参数分类列表
                List<string> categoryNames = new List<string>();
                ds = oCN.RunProcReturn($"exec h_p_SB_EquipTechParamBillListByEquipID {HEquipID}", "h_p_SB_EquipTechParamBillListByEquipID");
                var ds1 = oCN.RunProcReturn($"select * from h_v_Gy_Technology", "h_v_Gy_Technology");
                if (ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "当前设备没有数采信息";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                // 遍历获取工艺参数分类列表
                if (ds1.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow row in ds1.Tables[0].Rows)
                    {
                        string categoryName = row["工艺参数分类名称"].ToString().Trim();
                        if (!string.IsNullOrEmpty(categoryName))
                        {
                            categoryNames.Add(categoryName);
                        }
                    }
                }
                // 提取原始数据到模型列表
                var rawParams = new List<EquipTechParam>();
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    rawParams.Add(new EquipTechParam
                    {
                        TechParamName = row["HTechParamName"].ToString().Trim(),
                        CreateTime = Convert.ToDateTime(row["HCreateTime"]),
                        Result = row["HResult"].ToString()
                    });
                }
                // 按工艺分类名称分组
                Dictionary<string, List<EquipTechParam>> groupedParams = new Dictionary<string, List<EquipTechParam>>();
                // 初始化所有工艺分类分组
                foreach (string category in categoryNames)
                {
                    groupedParams[category] = new List<EquipTechParam>();
                }
                // 新增“其他参数”兜底分组
                groupedParams["其他参数"] = new List<EquipTechParam>();
                // 匹配参数到对应分组(按参数名包含分类名称子串)
                foreach (var param in rawParams)
                {
                    bool isMatched = false;
                    // 遍历所有工艺分类,判断参数名是否包含该分类名称
                    foreach (string category in categoryNames)
                    {
                        if (param.TechParamName.Contains(category))
                        {
                            groupedParams[category].Add(param);
                            isMatched = true;
                            break; // 匹配到第一个分类后停止(避免重复匹配)
                        }
                    }
                    // 无匹配分类则归为“其他参数”
                    if (!isMatched)
                    {
                        groupedParams["其他参数"].Add(param);
                    }
                }
                // 转换为JArray格式(前端可直接解析)
                JArray resultJArray = new JArray();
                foreach (var group in groupedParams)
                {
                    // 过滤空分组(无数据的分类不返回)
                    if (group.Value.Count == 0) continue;
                    JObject groupJObj = new JObject();
                    groupJObj.Add("分组名称", group.Key); // 工艺参数分类名称(如中子、保压)
                    JArray paramsJArray = new JArray();
                    foreach (var param in group.Value.OrderBy(p => p.TechParamName))
                    {
                        JObject paramJObj = new JObject();
                        paramJObj.Add("HTechParamName", param.TechParamName);
                        paramJObj.Add("HCreateTime", param.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"));
                        paramJObj.Add("HResult", param.Result);
                        paramsJArray.Add(paramJObj);
                    }
                    groupJObj.Add("参数列表", paramsJArray);
                    resultJArray.Add(groupJObj);
                }
                // 保留原有列名逻辑(兼容前端)
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));
                }
                // 组装返回结果
                objJsonResult.code = "1";
                objJsonResult.count = resultJArray.Count; // 有效分组数量
                objJsonResult.Message = "Success!";
                objJsonResult.data = resultJArray;
                objJsonResult.list = columnNameList;
                return objJsonResult;
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "查询数据异常,请与管理员联系!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}