zrg
2025-07-31 57c475ed168e905443eb2e34cc12a3d03fc355f6
WFormSynchronizeData_SMR/EquipmentCollectionForm/EquipmentCollectionForm.cs
@@ -40,10 +40,10 @@
            this.txtHMaker.Text = "请输入用户编码!";
            bindCbox();
        }
        private  void btnBegin_Click(object sender, EventArgs e)
        private void btnBegin_Click(object sender, EventArgs e)
        {
            if (this.txtHBathNo.Text == "" || this.txtHBathNo.ReadOnly == false)
            //if (false)
@@ -119,7 +119,7 @@
                                    ",有无螺牙检测结果:" + dt.Rows[i]["DetectionResult"].ToString() +
                                ",时间:" + dt.Rows[i]["HDate"].ToString());
                            }
                        }
                    }
                }
@@ -175,7 +175,8 @@
                    for (int j = 0; j < 2; j++)
                    {
                        DateTime Now = DateTime.Parse(dt2.Rows[i][dt2.Columns[6]].ToString() + " " + dt2.Rows[i][dt2.Columns[7]].ToString());
                        if (Now >= HBegin && Now <= HEnd) {
                        if (Now >= HBegin && Now <= HEnd)
                        {
                            DataRow dr = dt.NewRow();
                            dr["BottomHoleDiameter"] = dt2.Rows[i][dt2.Columns[j]].ToString();
                            dr["TestingData"] = dt2.Rows[i][dt2.Columns[j + 2]].ToString();
@@ -211,16 +212,18 @@
                {
                    MessageBox.Show("请输入制单人信息!");
                }
                else {
                else
                {
                    Get_DisplayBard();
                }
                //this.txtHBathNo.ReadOnly = true;
            }
        }
        //查询条码数据
        public void Get_DisplayBard() {
        public void Get_DisplayBard()
        {
            string HBarCode = this.txtHBathNo.Text;
            DataSet ds = oCN.RunProcReturn("select HBatchNo,m.HNumber,a.HMaterID from Gy_BarCodeBill a left join Gy_Material m on a.HMaterID = m.HItemID where HBarCode='" + HBarCode + "'", "Gy_BarCodeBill");
@@ -228,7 +231,8 @@
            {
                MessageBox.Show("条码查无数据!");
            }
            else {
            else
            {
                this.txtHBathNo.Text = ds.Tables[0].Rows[0]["HBatchNo"].ToString();
                this.txtHMaterNumber.Text = ds.Tables[0].Rows[0]["HNumber"].ToString();
                this.HMaterID.Text = ds.Tables[0].Rows[0]["HMaterID"].ToString();
@@ -262,7 +266,8 @@
        {
            DialogResult dr = MessageBox.Show("确认保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (dr == DialogResult.Yes) {
            if (dr == DialogResult.Yes)
            {
                string Url = DBHelper.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "Config/SQLAPI.config", "sUrl");
                //通过接口 获取token
@@ -287,12 +292,13 @@
        }
        //螺母全检保存
        public async void SaveFullInspectionOfNuts(string token,string url) {
        public async void SaveFullInspectionOfNuts(string token, string url)
        {
            try
            {
                //获取所有设备数据
                JsonEquipmentData jsonResult =await FindDeviceList(url, token);
                JsonEquipmentData jsonResult = await FindDeviceList(url, token);
                if (jsonResult.code != "0")
                {
@@ -321,7 +327,8 @@
                        this.btnSave.Enabled = true;
                        MessageBox.Show("数量获取报错:" + jsonResult.message);
                    }
                    else {
                    else
                    {
                        double HInSpectQty = 0;//检验数量
                        double HRightQty = 0;//合格
                        double HUnRightQty = 0;//不合格
@@ -373,7 +380,8 @@
                            this.btnSave.Enabled = true;
                            MessageBox.Show("生产资源查无数据!");
                        }
                        else {
                        else
                        {
                            HSourceID = int.Parse(dsSouce.Tables[0].Rows[0]["HItemID"].ToString());
@@ -413,7 +421,7 @@
                                        //分析方法 为定量分析
                                        if (HAnalysisMethod == "2")
                                        {
                                           //获取上限
                                            //获取上限
                                            HUpLimit = decimal.Parse(dataSet.Tables[0].Rows[i]["HTargetVal"].ToString()) + decimal.Parse(dataSet.Tables[0].Rows[i]["HUpLimit"].ToString());
                                            //获取下限
                                            HDownLimit = decimal.Parse(dataSet.Tables[0].Rows[i]["HTargetVal"].ToString()) + decimal.Parse(dataSet.Tables[0].Rows[i]["HDownLimit"].ToString());
@@ -581,13 +589,13 @@
            }
        }
      /// <summary>
      /// 获取设备列表
      /// </summary>
      /// <param name="url"></param>
      /// <param name="postData"></param>
      /// <returns></returns>
        public async Task<JsonEquipmentData> EquipmentList(string url, StringContent postData,string Type)
        /// <summary>
        /// 获取设备列表
        /// </summary>
        /// <param name="url"></param>
        /// <param name="postData"></param>
        /// <returns></returns>
        public async Task<JsonEquipmentData> EquipmentList(string url, StringContent postData, string Type)
        {
            // 创建 HttpClient 实例
@@ -606,8 +614,8 @@
                        // 发起 get 请求
                        response = await client.GetAsync(url);
                    }
                    // 确保请求成功
                    if (response.IsSuccessStatusCode)
                    {
@@ -617,7 +625,7 @@
                    }
                    else
                    {
                        MessageBox.Show($"请求失败,: {response.StatusCode}");
                        MessageBox.Show($"请求失败:{response.StatusCode} - {url} - 当前时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
                    }
                }
@@ -659,7 +667,7 @@
                    }
                    else
                    {
                        MessageBox.Show($"请求失败,: {response.StatusCode}");
                        MessageBox.Show($"请求失败:{response.StatusCode} - {url} - 当前时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
                    }
                }
@@ -688,7 +696,8 @@
        }
        //获取设备列表
        public async Task<JsonEquipmentData> FindDeviceList(string url,string token) {
        public async Task<JsonEquipmentData> FindDeviceList(string url, string token)
        {
            //设备列表接口
            string urls = url + EquipmentType.Two;
            // 准备要发送的表单数据
@@ -698,7 +707,7 @@
        }
        //获取良品、不良品明细
        public async Task<JsonEquipmentData> FindAllDevicePropsDetailByTimeRange(string url, string token,string nos, string HBegin, string HEnd)
        public async Task<JsonEquipmentData> FindAllDevicePropsDetailByTimeRange(string url, string token, string nos, string HBegin, string HEnd)
        {
            string basePropIds = DBHelper.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "Config/SQLAPI.config", "basePropIds");
            basePropIds = "[" + basePropIds + "]";
@@ -707,7 +716,7 @@
            //设备列表接口
            string urls = url + EquipmentType.Nine;
            CustomWriteLog("获取工艺参数接口:'"+ urls + "'", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            CustomWriteLog("工艺参数接口:'" + urls + "' 参数值: '" + stringJson + "'", DateTime.Now.ToString("yyyy-MM-dd"));
            // 准备要发送的表单数据
            var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
@@ -716,11 +725,12 @@
        }
        //获取不良数,合数数,可疑数 总数
        public async Task<JsonEquipmentData> FindDevicePropCalc(string url, string token,string nos,string HBegin,string HEnd)
        public async Task<JsonEquipmentData> FindDevicePropCalc(string url, string token, string nos, string HBegin, string HEnd)
        {
            string stringJson = "{\"token\":\"" + token + "\",\"deviceNo\":\"" + nos + "\",\"propIds\":[606,173,469,470],\"beginTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
            var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
            string urls = url + EquipmentType.Seven;
            CustomWriteLog("获取不良数,合数数,可疑数 总数:'" + urls + "' 参数值: '" + stringJson + "'", DateTime.Now.ToString("yyyy-MM-dd"));
            JsonEquipmentData jsonResult = await EquipmentList(urls, postData, "POST");
            return jsonResult;
        }
@@ -734,6 +744,7 @@
            string stringJson = "{\"token\":\"" + token + "\",\"nos\":[" + nos + "]}";
            var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
            string urls = url + EquipmentType.Three;
            CustomWriteLog("设备运行状态:'" + urls + "' 参数值: '" + stringJson + "'", DateTime.Now.ToString("yyyy-MM-dd"));
            JsonEquipmentData jsonResult = await EquipmentList(urls, postData, "POST");
            return jsonResult;
        }
@@ -746,6 +757,7 @@
            string stringJson = "{\"token\":\"" + token + "\",\"nos\":[" + nos + "],\"startTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
            var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
            string urls = url + EquipmentType.Four;
            CustomWriteLog("设备时间段产量:'" + urls + "' 参数值: '" + stringJson + "'", DateTime.Now.ToString("yyyy-MM-dd"));
            JsonEquipmentData jsonResult = await EquipmentList(urls, postData, "POST");
            return jsonResult;
        }
@@ -758,6 +770,7 @@
            string stringJson = "{\"token\":\"" + token + "\",\"no\":" + nos + ",\"startTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
            var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
            string urls = url + EquipmentType.Five;
            CustomWriteLog("设备运行时间接口:'" + urls + "' 参数值: '" + stringJson + "'", DateTime.Now.ToString("yyyy-MM-dd"));
            JsonResult jsonResult = await EquipResultList(urls, postData, "POST");
            return jsonResult;
        }
@@ -770,6 +783,7 @@
            string stringJson = "{\"token\":\"" + token + "\",\"no\":" + nos + ",\"startTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
            var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
            string urls = url + EquipmentType.Ten;
            CustomWriteLog("注塑机的 开机接口:'" + urls + "' 参数值: '" + stringJson + "'", DateTime.Now.ToString("yyyy-MM-dd"));
            JsonResult jsonResult = await EquipResultList(urls, postData, "POST");
            return jsonResult;
        }
@@ -779,7 +793,7 @@
        private void bindCbox()
        {
            IList<Info> infoList = new List<Info>();
            Info info1 = new Info() { Id = "CMR-QC-SE-001", Name = "螺母全检" };
            Info info1 = new Info() { Id = "CMR-QC-SE-001", Name = "螺母全检" };
            Info info2 = new Info() { Id = "CMR-ZZ-SE-001", Name = "螺母压装" };
            Info info3 = new Info() { Id = "ZSJ07", Name = "注塑机#07" };
            //Info info3 = new Info() { Id = "3", Name = "王五" };
@@ -801,7 +815,7 @@
                this.btnLj.Enabled = true;
                this.timer.Enabled = false;
            }
            else
            else
            {
                this.btnLj.Enabled = false;
                DialogResult dr = MessageBox.Show("是否确认开始采集?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
@@ -849,7 +863,8 @@
        }
        //螺母压装采集数据 保存
        public async void SaveNutPressFit(string Url , string token, string time) {
        public async void SaveNutPressFit(string Url, string token, string time)
        {
            if (TimeDate == "")
            {
                TimeDate = this.txtBegin.Text;
@@ -863,7 +878,7 @@
            }
            else
            {
                 string nos = "";
                string nos = "";
                //获取去设备编码
                for (int i = 0; i < jsonResult.data.Count; i++)
                {
@@ -905,8 +920,8 @@
                    //合格数
                    if (jsonEquipment.data[i].propId == 469)
                    {
                        JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"良品数\",\"HResult\":\"OK\",\"HCount\":" + jsonEquipment.data[i].sum + ",\"HSourceCode\":\""+ nos + "\"},";
                    }
                        JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"良品数\",\"HResult\":\"OK\",\"HCount\":" + jsonEquipment.data[i].sum + ",\"HSourceCode\":\"" + nos + "\"},";
                    }
                    //不良数
                    else if (jsonEquipment.data[i].propId == 470)
                    {
@@ -925,25 +940,22 @@
        }
        //注塑机采集数据 保存
        public async void SaveInjectionMoldingMachine(string token, string Url,  string time)
        public async void SaveInjectionMoldingMachine(string token, string Url, string time)
        {
            ListData.Items.Clear();
            if (TimeDate == "")
            {
                TimeDate = this.txtBegin.Text;
            }
            //this.timer.Enabled = false;
            //TimeDate = "2025-02-10 13:10:50";
            //time = "2025-02-10 13:11:50";
            //获取所有设备数据
            JsonEquipmentData jsonResult = await FindDeviceList(Url, token);
            if (jsonResult.code != "0")
            {
                MessageBox.Show("设备列表报错:" + jsonResult.message);
            }
            else {
            else
            {
                string nos = "";
                //获取设备编码
@@ -962,26 +974,25 @@
                nos = nos.Substring(0, nos.Length - 1);
                //获取参数 获取每个设备对应的所有参数
                JsonEquipmentData jsonEquipment = await FindAllDevicePropsDetailByTimeRange(Url, token, nos, TimeDate, time);
                var JsonData = "{\"data\":[";
                if (jsonEquipment == null)
                {
                    CustomWriteLog("jsonEquipment对象为空", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    CustomWriteLog("jsonEquipment对象为空", DateTime.Now.ToString("yyyy-MM-dd"));
                }
                if (jsonEquipment.data == null)
                {
                    CustomWriteLog("data属性为空",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    CustomWriteLog("jsonEquipment.data属性为空", DateTime.Now.ToString("yyyy-MM-dd"));
                }
                var JsonData = "{\"data\":[";
                CustomWriteLog("开始循环工艺参数总数为::'" + jsonEquipment.data.Count + "'", DateTime.Now.ToString("yyyy-MM-dd"));
                try
                else
                {
                    CustomWriteLog("开始循环工艺参数总数为::'" + jsonEquipment.data.Count + "'", DateTime.Now.ToString("yyyy-MM-dd"));
                    //通过每个设备进行循环赋值
                    for (int i = 0; i < jsonEquipment.data.Count; i++)
                    {
                        CustomWriteLog("当前循环 第  '"+i+"'  次", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        CustomWriteLog("当前循环 第  '" + i + "'  次", DateTime.Now.ToString("yyyy-MM-dd"));
                        //获取设备对应的编码 判断编码是否满足为螺母压装设备
                        if (jsonEquipment.data[i].deviceNo.Contains("CMR-ZZ-SE-"))
                        {
@@ -1037,27 +1048,26 @@
                                for (int k = 0; k < jsonEquipment.data[i].props[j].datas.Count; k++)
                                {
                                    JsonData += "{\"HDate\":\"" + jsonEquipment.data[i].props[j].datas[k].createTime + "\",\"HTechParamName\":\"" + jsonEquipment.data[i].props[j].propName + "\",\"HResult\":\"" + jsonEquipment.data[i].props[j].datas[k].value + "\",\"HCount\":1,\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
                                    CustomWriteLog("工艺参数具体值:{\"HDate\":\"" + jsonEquipment.data[i].props[j].datas[k].createTime + "\",\"HTechParamName\":\"" + jsonEquipment.data[i].props[j].propName + "\",\"HResult\":\"" + jsonEquipment.data[i].props[j].datas[k].value + "\",\"HCount\":1,\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                                    //CustomWriteLog("工艺参数具体值:{\"HDate\":\"" + jsonEquipment.data[i].props[j].datas[k].createTime + "\",\"HTechParamName\":\"" + jsonEquipment.data[i].props[j].propName + "\",\"HResult\":\"" + jsonEquipment.data[i].props[j].datas[k].value + "\",\"HCount\":1,\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"}", DateTime.Now.ToString("yyyy-MM-dd"));
                                }
                            }
                            //获取设备时间段产量
                            JsonEquipmentData data = await FindProdByNosAndTime(Url, token, jsonEquipment.data[i].deviceNo, TimeDate, time);
                            JsonEquipmentData data = await FindProdByNosAndTime(Url, token, jsonEquipment.data[i].deviceNo, TimeDate, time);
                            for (int j = 0; j < data.data.Count; j++)
                            {
                                JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"生产数量\",\"HResult\":\"OK\",\"HCount\":" + data.data[j].prod + ",\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
                                CustomWriteLog("设备产量值:{\"HDate\":\"" + time + "\",\"HTechParamName\":\"生产数量\",\"HResult\":\"OK\",\"HCount\":" + data.data[j].prod + ",\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                                //CustomWriteLog("设备产量值:{\"HDate\":\"" + time + "\",\"HTechParamName\":\"生产数量\",\"HResult\":\"OK\",\"HCount\":" + data.data[j].prod + ",\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"}", DateTime.Now.ToString("yyyy-MM-dd"));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    CustomWriteLog("EXCEPTION_CAUGHT", $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - 异常信息:{ex.ToString()}");
                }
                CustomWriteLog("工艺参数与产量循环结束", DateTime.Now.ToString("yyyy-MM-dd"));
                    CustomWriteLog("工艺参数与产量循环结束", DateTime.Now.ToString("yyyy-MM-dd"));
                }
                CustomWriteLog("1", DateTime.Now.ToString("yyyy-MM-dd"));
                //获取设备运行状态
                var EquipmentStaus = await FindDeviceStatusByNos(Url, token, nos);
@@ -1066,55 +1076,47 @@
                {
                    //卷绕  注塑  浸渍  组装  的设备运行 开关停机时间
                    if (EquipmentStaus.data[i].no.Contains("CMR-JR-SD-") || EquipmentStaus.data[i].no.Contains("CMR-JZ-SD-") || EquipmentStaus.data[i].no.Contains("CMR-HX-SD-")
                        || EquipmentStaus.data[i].no.Contains("CMR-ZD-SD")|| EquipmentStaus.data[i].no.Contains("CMR-ZS-SE-"))
                        || EquipmentStaus.data[i].no.Contains("CMR-ZD-SD") || EquipmentStaus.data[i].no.Contains("CMR-ZS-SE-"))
                    {
                        string HBegDate = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
                        string HEndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:00");
                        if (DateTime.Parse(HEndDate).AddMinutes(1).ToString("yyyy-MM-dd") != DateTime.Parse(HEndDate).ToString("yyyy-MM-dd")) {
                            HEndDate= DateTime.Parse(HEndDate).AddMinutes(1).ToString("yyyy-MM-dd HH:mm:00");
                        if (DateTime.Parse(HEndDate).AddMinutes(1).ToString("yyyy-MM-dd") != DateTime.Parse(HEndDate).ToString("yyyy-MM-dd"))
                        {
                            HEndDate = DateTime.Parse(HEndDate).AddMinutes(1).ToString("yyyy-MM-dd HH:mm:00");
                        }
                        JsonResult HEqDate = await FindDeviceStatusTimeByNo(Url, token, EquipmentStaus.data[i].no, HBegDate, HEndDate);
                        if (HEqDate != null && HEqDate.data != null)
                        {
                        // 记录开机时长
                        CustomWriteLog("设备开机时长: {\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"开机时长\",\"HResult\":\"" + ((float)(HEqDate.data.onlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"}",
                                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            // 记录开机时长
                            CustomWriteLog("设备开机时长: 开机时长" + ((float)(HEqDate.data.onlineTime / 60 / 60)).ToString("0.00") + "  " + EquipmentStaus.data[i].no + "",
                                            DateTime.Now.ToString("yyyy-MM-dd"));
                        // 记录关机时长
                        CustomWriteLog("设备关机时长: {\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"关机时长\",\"HResult\":\"" + ((float)(HEqDate.data.offlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"}",
                                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            // 记录关机时长
                            CustomWriteLog("设备关机时长: 关机时长" + ((float)(HEqDate.data.offlineTime / 60 / 60)).ToString("0.00") + "  " + EquipmentStaus.data[i].no + "",
                                            DateTime.Now.ToString("yyyy-MM-dd"));
                        // 记录停机时长
                        CustomWriteLog("设备停机时长: {\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"停机时长\",\"HResult\":\"" + ((float)(HEqDate.data.standbyTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"}",
                                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            // 记录停机时长
                            CustomWriteLog("设备停机时长: 停机时长" + ((float)(HEqDate.data.standbyTime / 60 / 60)).ToString("0.00") + "  " + EquipmentStaus.data[i].no + "",
                                            DateTime.Now.ToString("yyyy-MM-dd"));
                        // 记录运行时长
                        CustomWriteLog("设备运行时长: {\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"运行时长\",\"HResult\":\"" + ((float)(HEqDate.data.runTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"}",
                                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            // 记录运行时长
                            CustomWriteLog("设备运行时长: 运行时长" + ((float)(HEqDate.data.runTime / 60 / 60)).ToString("0.00") + "  " + EquipmentStaus.data[i].no + "",
                                            DateTime.Now.ToString("yyyy-MM-dd"));
                        JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"开机时长\",\"HResult\":\"" + ((float)(HEqDate.data.onlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                        JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"关机时长\",\"HResult\":\"" + ((float)(HEqDate.data.offlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                        JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"停机时长\",\"HResult\":\"" + ((float)(HEqDate.data.standbyTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                        JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"运行时长\",\"HResult\":\"" + ((float)(HEqDate.data.runTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                            JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"开机时长\",\"HResult\":\"" + ((float)(HEqDate.data.onlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                            JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"关机时长\",\"HResult\":\"" + ((float)(HEqDate.data.offlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                            JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"停机时长\",\"HResult\":\"" + ((float)(HEqDate.data.standbyTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                            JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"运行时长\",\"HResult\":\"" + ((float)(HEqDate.data.runTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                        }
                        else
                        {
                            // 记录运行时长
                            CustomWriteLog("设备开停机时长为空 HEqDate:" + HEqDate + " , HEqDate.data " + HEqDate.data + "", DateTime.Now.ToString("yyyy-MM-dd"));
                        }
                    }
                    //卷绕  注塑  浸渍  组装  的设备运行 开关停机时间
                    //if (EquipmentStaus.data[i].no.Contains("CMR-ZS-SE-"))
                    //{
                    //    string HBegDate = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
                    //    string HEndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    //    JsonResult kj = await FindDeviceStatusTimeByNosAndOperationMode(Url, token, EquipmentStaus.data[i].no, HBegDate, HEndDate);
                    //    JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"开机时长\",\"HResult\":\"" + ((float)(kj.data.onlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                    //    JsonResult HEqDate = await FindDeviceStatusTimeByNo(Url, token, EquipmentStaus.data[i].no, HBegDate, HEndDate);
                    //    JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"关机时长\",\"HResult\":\"" + ((float)(HEqDate.data.offlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                    //    JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"停机时长\",\"HResult\":\"" + ((float)(HEqDate.data.standbyTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                    //    JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"运行时长\",\"HResult\":\"" + ((float)(HEqDate.data.runTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
                    //}
                    string staus = "";
                    switch (EquipmentStaus.data[i].status)
                    {
@@ -1177,18 +1179,18 @@
        }
        //数据保存
        public void DataSave(string JsonData) {
            JsonEquipmentData  data  = JsonConvert.DeserializeObject<JsonEquipmentData>(JsonData);
        public void DataSave(string JsonData)
        {
            JsonEquipmentData data = JsonConvert.DeserializeObject<JsonEquipmentData>(JsonData);
            for (int i = 0; i < data.data.Count; i++)
            {
                oCN.RunProc(@"insert into Sb_EquipMentCollectionTechParam_Temp(HDate,HSourceCode,HTechParamID,HTechParamName,HCount
,HCreateTime,HResult,HProcNumber,HFlag)
values(getdate(),'"+ data.data[i].HSourceCode + "',0,'" + data.data[i].HTechParamName + "'," + data.data[i].HCount
values(getdate(),'" + data.data[i].HSourceCode + "',0,'" + data.data[i].HTechParamName + "'," + data.data[i].HCount
+ ",'" + data.data[i].HDate + "','" + data.data[i].HResult + "','" + data.data[i].HProcNumber + "',0)");
                ListData.Items.Add("时间:" + data.data[i].HDate +",工艺参数:" + data.data[i].HTechParamName +",工艺参数值:" + data.data[i].HResult);
            }
            ListData.Items.Add($"时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss},加载成功");
        }
        //定时生成产量汇报单
@@ -1233,10 +1235,10 @@
                nos = nos.Substring(0, nos.Length - 1);
                //this.Time_CLHB.Enabled = false;
                CustomWriteLog("产量汇报单,设备编码:'" + nos + "'", DateTime.Now.ToString("yyyy-MM-dd"));
                //查询开工的设备信息 以及 查询当天设备对应的开工时间 和完工时间
                DataSet ds = oCN.RunProcReturn("exec h_p_Sc_TimeICMOReporList '" + nos + "'", "h_p_Sc_TimeICMOReporList");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    //根据当天只开工没有完工对应的产量数据 生成产量汇报单
@@ -1248,14 +1250,16 @@
                        string HBegDate = DateTime.Parse(dt.Rows[i]["日期"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                        string HEndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                        jsonEquipment = await FindProdByNosAndTime(Url, token, nos, HBegDate, HEndDate);
                        if (decimal.Parse(jsonEquipment.data[0].prod) > 0) {
                        if (decimal.Parse(jsonEquipment.data[0].prod) > 0)
                        {
                            //生成产量汇报单
                            oCN.RunProc("exec h_p_Sc_AddTimeICMORepor " + HICMInterID + "," + jsonEquipment.data[0].prod+",'"+ HEndDate + "'");
                            oCN.RunProc("exec h_p_Sc_AddTimeICMORepor " + HICMInterID + "," + jsonEquipment.data[0].prod + ",'" + HEndDate + "'");
                            CustomWriteLog("生成产量汇报单1:'exec h_p_Sc_AddTimeICMORepor " + HICMInterID + "," + jsonEquipment.data[0].prod + ",'" + HEndDate + "''", DateTime.Now.ToString("yyyy-MM-dd"));
                        }
                    }
                }
                if (ds.Tables[1].Rows.Count > 0)
                {
                {
                    //根据当天开工并且完工对应的产量数据 生成产量汇报单
                    DataTable dt = ds.Tables[1];
                    for (int i = 0; i < dt.Rows.Count; i++)
@@ -1269,6 +1273,7 @@
                        {
                            //生成产量汇报单
                            oCN.RunProc("exec h_p_Sc_AddTimeICMORepor " + HICMInterID + "," + jsonEquipment.data[0].prod + ",'" + HEndDate + "'");
                            CustomWriteLog("生成产量汇报单2:'exec h_p_Sc_AddTimeICMORepor " + HICMInterID + "," + jsonEquipment.data[0].prod + ",'" + HEndDate + "''", DateTime.Now.ToString("yyyy-MM-dd"));
                        }
                    }
                }
@@ -1388,7 +1393,8 @@
    }
    public class JsonResult {
    public class JsonResult
    {
        public string code { get; set; }
        public string message { get; set; }
        public string expirationTime { get; set; }
@@ -1435,7 +1441,7 @@
        public double sum { get; set; }
        public string createTime { get; set; }
        public string happenTime { get; set; }
        public string HDate{ get; set; }
        public string HDate { get; set; }
        public string HTechParamName { get; set; }
        public string HResult { get; set; }
        public string HCount { get; set; }
@@ -1443,7 +1449,8 @@
        public string HProcNumber { get; set; }
    }
    public class propsData {
    public class propsData
    {
        public string propName { get; set; }
        public List<JsonData> datas { get; set; }
        public string basePropId { get; set; }