schangxiang@126.com
2025-09-19 a68302033da081f9ad5e82268a01892c3e129cc1
siemenswmssditcode/wmsService/wcftest/Form1.cs
@@ -66,14 +66,20 @@
        /// 设备运行时间
        /// </summary>
        public static TimeSpan deviceRunTime;
        public static TimeSpan deviceRunTime_Srm1;
        public static TimeSpan deviceRunTime_Srm2;
        /// <summary>设备等待时间
        /// 设备等待时间
        /// </summary>
        public static TimeSpan deviceWaitTime;
        public static TimeSpan deviceWaitTime_Srm1;
        public static TimeSpan deviceWaitTime_Srm2;
        /// <summary>设备报警时间
        /// 设备报警时间
        /// </summary>
        public static TimeSpan deviceAlarmTime;
        public static TimeSpan deviceAlarmTime_Srm1;
        public static TimeSpan deviceAlarmTime_Srm2;
        /// <summary>设备使用率
        /// 设备使用率
        /// </summary>
@@ -82,10 +88,14 @@
        /// 设备运行计时器
        /// </summary>
        Stopwatch deviceSw = new Stopwatch();
        Stopwatch deviceSw_Srm1 = new Stopwatch();
        Stopwatch deviceSw_Srm2 = new Stopwatch();
        /// <summary>上一次设备运行状态
        /// 上一次设备运行状态
        /// </summary>
        public string lastStatus = "等待";
        public string lastStatus_Srm1 = "等待";
        public string lastStatus_Srm2 = "等待";
        /// <summary>上一次小时数--每隔一小时保存一次设备状态时间
        /// 上一次小时数--每隔一小时保存一次设备状态时间
        /// </summary>
@@ -2222,8 +2232,9 @@
            {
                try
                {
                    LogTextHelper.BatchDeleteLog(@"d:\\Log4Net_siemensSapService", 30);//增加 Log4Net_siemensSapService 文件夹 [EditBy shaocx,2022-10-12]
                    LogTextHelper.BatchDeleteLog(@"d:\\Log4Net", 30);//增加Log4Net文件夹 [EditBy shaocx,2022-09-22]
                    int days = 180;
                    LogTextHelper.BatchDeleteLog(@"d:\\Log4Net_siemensSapService", days);//增加 Log4Net_siemensSapService 文件夹 [EditBy shaocx,2022-10-12]
                    LogTextHelper.BatchDeleteLog(@"d:\\Log4Net", days);//增加Log4Net文件夹 [EditBy shaocx,2022-09-22]
                    LogTextHelper.BatchDeleteLog(@"d:\\log_MySAP", 30);
                    LogTextHelper.BatchDeleteLog(@"d:\\log_ShuYing", 30);
                    LogTextHelper.BatchDeleteLog(@"c:\\Siemens\\SAP_LOG", 30);
@@ -3121,6 +3132,8 @@
                    string[] containers = new string[19];
                    deviceSw.Start();// 设备运行计算器开始记时
                    deviceSw_Srm1.Start();// 设备运行计算器开始记时
                    deviceSw_Srm2.Start();// 设备运行计算器开始记时
                    #region 获取设备信息
                    if (allowGetDeviceInfo == true)
@@ -3194,24 +3207,11 @@
                            totalInfo.list11[1] = outTaskCount.Count;
                        }
                        //更改数量 【Editby shaocx,2024-11-22】
                        /*
                        if (stockUsingCount != null)
                        {
                            decimal cout = stockUsingCount.Count / 1140M * 100;
                            totalInfo.list11[2] = Convert.ToInt32(cout);
                        }
                        if (outTimeStockCount != null)
                        {
                            totalInfo.list11[3] = outTimeStockCount.Count;
                        }
                        //*/
                        totalInfo.list11[2] = 1152;
                        totalInfo.list11[3] = 1152 - stockUsingCount.Count();
                        if (lastHour != today.Hour)
                        //int aaaa = 1;
                        //if (aaaa == 2)
                        {
                            //每隔一小时保存一次设备状态时间
                            lastHour = today.Hour;
@@ -3231,20 +3231,28 @@
                            }
                            else
                            {
                                //todayDeviceInfo.deviceWaitTime = deviceWaitTime.TotalMinutes > 0 ? Convert.ToDecimal(deviceWaitTime.TotalMinutes) : 0M;// deviceWaitTime.Hours * 60M + deviceWaitTime.Minutes;
                                todayDeviceInfo.deviceRunTime = deviceRunTime.TotalMinutes > 0 ? Convert.ToDecimal(deviceRunTime.TotalMinutes) : 0M;
                                todayDeviceInfo.deviceAlarmTime = deviceAlarmTime.TotalMinutes > 0 ? Convert.ToDecimal(deviceAlarmTime.TotalMinutes) : 0M;
                                //重新计算设备等待时间 【Editby shaocx,2024-12-30】
                                CommonCalcWaitTime(ref todayDeviceInfo);
                                DeviceGeneralInfoHelper.CommonCalcWaitTime(ref todayDeviceInfo);
                                todayDeviceInfo.taskEnterCount = enterTaskCount.Count;//入库任务数
                                todayDeviceInfo.taskOutCount = outTaskCount.Count;//出库任务数
                                //更改数量 【Editby shaocx,2024-11-22】
                                //decimal cout = stockUsingCount.Count / 1140M * 100;
                                decimal cout = stockUsingCount.Count / 1152M * 100;
                                todayDeviceInfo.stockProportion = Convert.ToInt32(cout);//已使用的库位
                                todayDeviceInfo.outDate = outTimeStockCount.Count;//过期时间小于一个月的库存数据
                            }
                            DeviceGeneralInfoHelper.HandlerDeviceGeneralInfoForDetail(1, enterTaskCount, outTaskCount, stockUsingCount, outTimeStockCount,
                                mod, lastHour, todayTime,
                                deviceSw_Srm1, deviceRunTime_Srm1, deviceAlarmTime_Srm1, deviceWaitTime_Srm1
                                );
                            DeviceGeneralInfoHelper.HandlerDeviceGeneralInfoForDetail(2, enterTaskCount, outTaskCount, stockUsingCount, outTimeStockCount,
                             mod, lastHour, todayTime,
                             deviceSw_Srm2, deviceRunTime_Srm2, deviceAlarmTime_Srm2, deviceWaitTime_Srm2
                             );
                            int chang = mod.SaveChanges();
                        }
@@ -3274,6 +3282,60 @@
                            if (lastStatus != "运行")
                            {
                                setDeviceStatusTime(lastStatus, "运行");
                            }
                        }
                    }
                    #endregion
                    #region 统计设备运行效率(详细) 【Editby shaocx,2025-09-19】
                    //1号堆垛机
                    if (deviceListInfo.srm1.isAlarm == true)
                    {
                        if (lastStatus_Srm1 != "报警")
                        {
                            setDeviceStatusTimeForDetail(1, lastStatus_Srm1, "报警");
                        }
                    }
                    else
                    {
                        if (deviceListInfo.srm1.status == "空闲")
                        {
                            if (lastStatus_Srm1 != "等待")
                            {
                                setDeviceStatusTimeForDetail(1, lastStatus_Srm1, "等待");
                            }
                        }
                        else
                        {
                            if (lastStatus_Srm1 != "运行")
                            {
                                setDeviceStatusTimeForDetail(1, lastStatus_Srm1, "运行");
                            }
                        }
                    }
                    //2号堆垛机
                    if (deviceListInfo.srm2.isAlarm == true)
                    {
                        if (lastStatus_Srm2 != "报警")
                        {
                            setDeviceStatusTimeForDetail(2, lastStatus_Srm2, "报警");
                        }
                    }
                    else
                    {
                        if (deviceListInfo.srm2.status == "空闲")
                        {
                            if (lastStatus_Srm2 != "等待")
                            {
                                setDeviceStatusTimeForDetail(2, lastStatus_Srm2, "等待");
                            }
                        }
                        else
                        {
                            if (lastStatus_Srm2 != "运行")
                            {
                                setDeviceStatusTimeForDetail(2, lastStatus_Srm2, "运行");
                            }
                        }
                    }
@@ -3323,9 +3385,66 @@
            {
            }
        }
        /// <summary>设备状态变化的时候 保存状态时间(明细)
        /// 设备状态变化的时候 保存状态时间
        /// </summary>
        /// <param name="status"></param>
        private void setDeviceStatusTimeForDetail(int srmNo, string lastStatuss, string nowStatus)
        {
            try
            {
                switch (lastStatuss)
                {
                    case "等待":
                        if (srmNo == 1)
                        {
                            deviceWaitTime_Srm1 += deviceSw_Srm1.Elapsed;
                        }
                        else
                        {
                            deviceWaitTime_Srm2 += deviceSw_Srm2.Elapsed;
                        }
                        break;
                    case "运行":
                        if (srmNo == 1)
                        {
                            deviceRunTime_Srm1 += deviceSw_Srm1.Elapsed;
                        }
                        else
                        {
                            deviceRunTime_Srm2 += deviceSw_Srm2.Elapsed;
                        }
                        break;
                    case "报警":
                        if (srmNo == 1)
                        {
                            deviceAlarmTime_Srm1 += deviceSw_Srm1.Elapsed;
                        }
                        else
                        {
                            deviceAlarmTime_Srm2 += deviceSw_Srm2.Elapsed;
                        }
                        break;
                }
                if (srmNo == 1)
                {
                    deviceSw_Srm1.Restart();
                    lastStatus_Srm1 = nowStatus;
                }
                else
                {
                    deviceSw_Srm2.Restart();
                    lastStatus_Srm2 = nowStatus;
                }
            }
            catch (Exception)
            {
            }
        }
        /// <summary>大屏信息初始化
        /// 大屏信息初始化
@@ -3360,7 +3479,7 @@
                        //设备等待时间
                        //creatTodayDeviceInfo.deviceWaitTime = Convert.ToDecimal(deviceWaitTime.Hours * 60M) + deviceWaitTime.Minutes;//单位分钟
                        //重新计算设备等待时间 【Editby shaocx,2024-12-30】
                        CommonCalcWaitTime(ref todayDeviceInfo);
                        DeviceGeneralInfoHelper.CommonCalcWaitTime(ref todayDeviceInfo);
                        creatTodayDeviceInfo.createTime = DateTime.Now;
                        mod.deviceGeneralInfo.Add(creatTodayDeviceInfo);
@@ -3370,6 +3489,10 @@
                    }
                }
                DeviceGeneralInfoHelper.deviceInfoInitForDetails(1, todayTime, lastHour, deviceAlarmTime_Srm1, deviceRunTime_Srm1, deviceWaitTime_Srm1);
                DeviceGeneralInfoHelper.deviceInfoInitForDetails(2, todayTime, lastHour, deviceAlarmTime_Srm2, deviceRunTime_Srm2, deviceWaitTime_Srm2);
                deviceInfos = new Thread(deviceInfo);
                deviceInfos.Start();
            }
@@ -3604,11 +3727,7 @@
            return resultDate;
        }
        private void CommonCalcWaitTime(ref deviceGeneralInfo todayDeviceInfo)
        {
            //重新计算设备等待时间 【Editby shaocx,2024-12-30】
            todayDeviceInfo.deviceWaitTime = 1440 - (todayDeviceInfo.deviceRunTime + todayDeviceInfo.deviceAlarmTime);
        }
        #endregion