chenhaozhe
2026-04-16 b56d9c96bc858556f51cf3ca94501ebc7ebc1f52
WebAPI/Controllers/Éú²ú¹ÜÀí/É豸״̬·Ö²½/Sc_HEquipStateDistributionController.cs
@@ -23,6 +23,7 @@
        //获取系统参数
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        #region è®¾å¤‡åˆ†å¸ƒ è®¾å¤‡ç»‘定的生产资源上正在生产的工单 
@@ -52,6 +53,36 @@
            }
        }
        #endregion
        #region è®¾å¤‡åˆ†å¸ƒ è®¾å¤‡ç»‘定的生产资源上正在生产的工单 åˆå¹¶ ç¨¼åŠ¨çŽ‡å’ŒOEE
        [Route("Sc_HEquipStateDistribution/Sc_HEquipStateDistribution_Souce_MergeOEEReport")]
        [HttpGet]
        public object Sc_HEquipStateDistribution_Souce_MergeOEEReport(string HDeptID, string user, int OrganizationID)
        {
            try
            {
                string sql1 = string.Format("exec h_p_sc_HDeptSouceMOList_MergeOEEReport {0},{1}", HDeptID, OrganizationID);
                ds = oCN.RunProcReturn(sql1, "h_p_sc_HDeptSouceMOList_MergeOEEReport");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region è®¾å¤‡çŠ¶æ€åˆ†æ­¥ä¸‹æŽ¨è®¾å¤‡ç‚¹æ£€å‚æ•°è¡¨
        [Route("Sc_HEquipStateDistribution/Get_EquipICMOTechParamList_Json")]
@@ -110,8 +141,16 @@
                string HDeptID = dic["HDeptID"].ToString();
                string HSourceID = dic["HSourceID"].ToString();
                string HEquipID = dic["HEquipID"].ToString();
                ds = oCN.RunProcReturn("exec h_p_Sc_FourStateDistributionReport '" + HDeptID + "','" + HSourceID + "'", "h_p_Sc_FourStateDistributionReport");
                if (string.IsNullOrWhiteSpace(HEquipID))
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_FourStateDistributionReport '" + HDeptID + "','" + HSourceID + "'", "h_p_Sc_FourStateDistributionReport");
                }else
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_FourStateDistributionReport '" + HDeptID + "','" + HSourceID + "'" + $",'{HEquipID}'", "h_p_Sc_FourStateDistributionReport");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
@@ -137,5 +176,231 @@
            }
        }
        #endregion
        #region è®¾å¤‡è¿è¡Œåˆ‡ç‰‡ï¼ŒèŽ·å–éƒ¨é—¨-设备 æ ‘状图
        private class HEquipTreeList_DAQ_Node
        {
            public int id { get; set; }
            public string title { get; set; }
            public List<HEquipTreeList_DAQ_Node> children { get; set; }
        }
        [Route("DAQ_EquipRunningSlice/GetHEquipTreeList_DAQ")]
        [HttpGet]
        public object Sc_HEquipStateDistribution_Souce(string sWhere)
        {
            try
            {
                List<HEquipTreeList_DAQ_Node> treeArr = new List<HEquipTreeList_DAQ_Node>();
                // è®°å½•部门是否已经加入treeArr(不可重复加入)
                HashSet<String> HDeptSet = new HashSet<String>();
                ds = oCN.RunProcReturn($@"select hmainid HEquipID, è®¾å¤‡åç§° HEquipName, HDeptID HDeptID, ä½¿ç”¨éƒ¨é—¨ HDeptName from h_v_Gy_EquipFileMainList
                {sWhere}
                order by HEquipName asc", "h_v_Gy_EquipFileMainList");
                foreach(DataRow row in ds.Tables[0].Rows)
                {
                    int HDeptID = int.Parse(row["HDeptID"].ToString());
                    string HDeptName = row["HDeptName"] as string;
                    int HEquipID = int.Parse(row["HEquipID"].ToString());
                    string HEquipName = row["HEquipName"] as string;
                    if (!HDeptSet.Contains(row["HDeptID"].ToString()))
                    {
                        // æ²¡æœ‰éƒ¨é—¨å¯¹åº”的一级节点,则添加一级节点
                        treeArr.Add(new HEquipTreeList_DAQ_Node
                        {
                            id = int.Parse(row["HDeptID"].ToString()),
                            title = row["HDeptName"].ToString(),
                            children = new List<HEquipTreeList_DAQ_Node>()
                        });
                        // éƒ¨é—¨ID添加到Set,确保唯一性
                        HDeptSet.Add(row["HDeptID"].ToString());
                    }
                    // éƒ¨é—¨å¯¹å°çš„一级节点已经设置好,设置二级节点
                    HEquipTreeList_DAQ_Node Node = treeArr.First(item => item.id == HDeptID);
                    Node.children.Add(new HEquipTreeList_DAQ_Node
                    {
                        id = HEquipID,
                        title = HEquipName,
                        children = new List<HEquipTreeList_DAQ_Node>()
                    });
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "查询成功";
                objJsonResult.data = JArray.FromObject(treeArr);
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.Message.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region è®¾å¤‡è¿è¡Œåˆ‡ç‰‡ è¿”回设备状态 å›¾è¡¨æ•°æ® (饼图)
        [Route("DAQ_EquipRunningSlice/GetHEquipStatusReportList_DAQ")]
        [HttpGet]
        public object GetHEquipStatusReportList_DAQ(string HEquipID, string HDeptID, string HBeginDate, string HEndDate, string user)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                string sql = "select * from h_v_Sb_EquipRunningStatusReport where 1 = 1";
                if(!string.IsNullOrWhiteSpace(HEquipID) && HEquipID != "0")
                {
                    sql += $" and HEquipID = {HEquipID}";
                }
                if(!string.IsNullOrWhiteSpace(HDeptID) && HDeptID != "0")
                {
                    sql += $" and HDeptID = {HDeptID}";
                }
                if(!string.IsNullOrWhiteSpace(HBeginDate) && !string.IsNullOrWhiteSpace(HEndDate))
                {
                    sql += $"and (所属日期 between CONVERT(DATETIME, '{HBeginDate} 00:00:00', 120) AND CONVERT(DATETIME, '{HEndDate} 23:59:59', 120))";
                }
                ds = oCN.RunProcReturn(sql, "h_v_Sb_EquipRunningStatusReport");
                //添加列名
                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));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = columnNameList;
                return objJsonResult;
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "查询数据异常,请与管理员联系!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region è®¾å¤‡è¿è¡Œåˆ‡ç‰‡ è¿”回设备状态 å›¾è¡¨æ•°æ® (时序图)
        [Route("DAQ_EquipRunningSlice/GetHEquipStatusReportList2_DAQ")]
        [HttpGet]
        public object GetHEquipStatusReportList2_DAQ(string HEquipID, string HDeptID, string HBeginDate, string HEndDate, string user)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                ds = oCN.RunProcReturn($@"exec h_p_DAQ_EquipTimeLineReport {HEquipID}, {HDeptID}, N'{HBeginDate}', N'{HEndDate}'", "h_p_DAQ_EquipTimeLineReport");
                // åˆå§‹åŒ–结果 JObject
                JObject result = new JObject();
                // æŒ‰æ—¶é—´å¯¹è¡¨æŸ¥è¯¢å‡ºæ¥çš„æ•°æ®è¿›è¡Œåˆ†ç»„
                DataTable table = ds.Tables[0];
                var groupedData = table.Rows.Cast<DataRow>()
                .GroupBy(row =>
                {
                    // å–出时间字段并转为日期(自动忽略时分秒)
                    DateTime time = Convert.ToDateTime(row["时间"]);
                    return time.ToString("yyyy-MM-dd"); // åˆ†ç»„ Key
                });
                foreach (var group in groupedData)
                {
                    string dateKey = group.Key;
                    JArray dataArray = new JArray();
                    foreach (DataRow row in group)
                    {
                        JObject rowObj = new JObject();
                        // æŠŠè¿™ä¸€è¡Œçš„æ‰€æœ‰åˆ—都转成 ECharts可以读取的data对象
                        foreach (DataColumn col in table.Columns)
                        {
                            rowObj[col.ColumnName] = row[col] != DBNull.Value
                                ? JToken.FromObject(row[col])
                                : null;
                        }
                        dataArray.Add(rowObj);
                    }
                    // åŠ å…¥æœ€ç»ˆç»“æžœ
                    result[dateKey] = dataArray;
                }
                //添加列名
                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));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = result;
                objJsonResult.list = columnNameList;
                return objJsonResult;
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "查询数据异常,请与管理员联系!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region è®¾å¤‡é©¾é©¶èˆ± æ ¹æ®éƒ¨é—¨æŸ¥è¯¢å¯¹åº”的设备
        [Route("Sc_HEquipStateDistribution/Get_HEquipStateList")]
        [HttpGet]
        public object Get_HEquipStateList(string HDeptID, string user, int OrganizationID)
        {
            try
            {
                string sql1 = string.Format("exec h_p_sc_HDeptEquipList {0},{1}", HDeptID, OrganizationID);
                ds = oCN.RunProcReturn(sql1, "h_p_sc_HDeptEquipList");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}