duheng
2024-09-11 d43b0f6eaf671b6432dc99b114f19d11ca7f5659
DAL/IStation.DAL.Project/ÀúÊ·µ÷¶È·½°¸/HistoryAnaPrjFileHelper.cs
@@ -1,5 +1,4 @@

using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -14,7 +13,6 @@
        {
            if (prj == null || prj.BlockTimes == null || prj.BlockTimes.Count == 0 || request == null) return false;
            //插入到数据库
            var dal = new IStation.DAL.AnaProject();
            var old_prjs = dal.GetAllByCreateDay(DateTime.Now.Date);
@@ -24,20 +22,17 @@
            }
            else
            {
                prj.Name = string.Format("P-{0}-{1}", DateTime.Now.Date.ToString("yyyyMMdd"), (old_prjs.Count+1).ToString("000"));
                prj.Name = string.Format("P-{0}-{1}", DateTime.Now.Date.ToString("yyyyMMdd"), (old_prjs.Count + 1).ToString("000"));
            }
            dal.Insert(prj, request);
            return WriteXmlFile(settting,  request , prj);
            return WriteXmlFile(settting, request, prj);
        }
        //保存
        //保存
        public static bool SavePrj(CalcModel.AnaSetting settting, IStation.CalcModel.AnaRequestBase requestBase, IStation.CalcModel.AnaPrj prj)
        {
            if (prj == null || prj.BlockTimes == null || prj.BlockTimes.Count == 0) return false;
            //插入到数据库
            var dal = new IStation.DAL.AnaProject();
@@ -47,6 +42,7 @@
        }
        #region XML读写
        //
        private static bool WriteXmlFile(CalcModel.AnaSetting settting, IStation.CalcModel.AnaRequestBase requestBase, IStation.CalcModel.AnaPrj prj)
        {
@@ -81,9 +77,6 @@
            //toTalTick.InnerText = "10";
            //rootNode.AppendChild(toTalTick); //注意这里是 root.AppendChild
            #region ç‰ˆæœ¬ä¿¡æ¯
            XmlNode nodeVersionInfo = rootNode.SelectSingleNode("VersionInfo");
@@ -103,9 +96,8 @@
                if (nodeVersionInfo.InnerText != "V1")
                    nodeVersionInfo.InnerText = "V1";
            }
            #endregion
            #endregion ç‰ˆæœ¬ä¿¡æ¯
            var nodeProject = xmlDoc.CreateElement("ProjectInfo");
            rootNode.AppendChild(nodeProject);
@@ -113,7 +105,6 @@
            var nodeID = xmlDoc.CreateElement("ID");
            nodeID.InnerText = prj.ID;
            nodeProject.AppendChild(nodeID);
            var nodeStartTime = xmlDoc.CreateElement("StartTime");
            nodeStartTime.InnerText = prj.StartTime.ToString();
@@ -127,11 +118,9 @@
            nodeName.InnerText = prj.Name;
            nodeProject.AppendChild(nodeName);
            var nodeWaterLevelInfo = xmlDoc.CreateElement("WaterLevelInfo");
            nodeWaterLevelInfo.InnerText = prj.WaterLevelInfo;
            nodeProject.AppendChild(nodeWaterLevelInfo);
            var nodeSumPower = xmlDoc.CreateElement("SumPower");
            nodeSumPower.InnerText = prj.SumPower.ToString();
@@ -149,12 +138,6 @@
            nodeCalcSpaceMinute.InnerText = prj.CalcSpaceMinute.ToString();
            nodeProject.AppendChild(nodeCalcSpaceMinute);
            if (prj.EndTimeOpenPumpStatus != null)
            {
                var node_LastTime_OpenPumpCount = xmlDoc.CreateElement("LastTime_OpenPumpCount");
@@ -167,7 +150,6 @@
                    node_LastTime_OpenPumpIndex.InnerText = string.Join(",", prj.EndTimeOpenPumpStatus);
                    nodeProject.AppendChild(node_LastTime_OpenPumpIndex);
                }
            }
            else
            {//表示全部关机
@@ -176,10 +158,8 @@
                nodeProject.AppendChild(node_LastTime_OpenPumpCount);
            }
            #region BlockTimes
            #region BlockTimes
            var nodeBlockTimes = xmlDoc.CreateElement("BlockTimes");
            nodeProject.AppendChild(nodeBlockTimes);
@@ -208,7 +188,6 @@
                node_EndTimeIndex.InnerText = bt.EndTimeIndex.ToString();
                nodeBlockTime.AppendChild(node_EndTimeIndex);
                XmlNode node_ReservoirStartHeight = xmlDoc.CreateElement("ReservoirStartHeight");
                node_ReservoirStartHeight.InnerText = bt.ReservoirStartHeight.ToString();
                nodeBlockTime.AppendChild(node_ReservoirStartHeight);
@@ -216,7 +195,6 @@
                XmlNode node_ReservoirEndHeight = xmlDoc.CreateElement("ReservoirEndHeight");
                node_ReservoirEndHeight.InnerText = bt.ReservoirEndHeight.ToString();
                nodeBlockTime.AppendChild(node_ReservoirEndHeight);
                if (bt.OpenPumpIndexs != null)
                {
@@ -243,7 +221,8 @@
                if (bt.PointTimes != null)
                {
                    #region PointTimes
                    #region PointTimes
                    var nodePointTimes = xmlDoc.CreateElement("PointTimes");
                    nodeBlockTime.AppendChild(nodePointTimes);
@@ -299,20 +278,16 @@
                        XmlNode node_ReservoirDropFlowTotal = xmlDoc.CreateElement("ReservoirDropFlowTotal");
                        node_ReservoirDropFlowTotal.InnerText = pt.ReservoirDropFlowTotal.ToString();
                        nodePointTime.AppendChild(node_ReservoirDropFlowTotal);
                    }
                    #endregion
                    #endregion PointTimes
                }
            }
            #endregion
            #endregion BlockTimes
            #region PumpSwitchs
            #region PumpSwitchs
            var nodePumpSwitchs = xmlDoc.CreateElement("PumpSwitchs");
            nodeProject.AppendChild(nodePumpSwitchs);
@@ -338,9 +313,7 @@
                nodePumpSwitch.AppendChild(node_SwitchType);
            }
            #endregion
            #endregion PumpSwitchs
            #region setting
@@ -375,7 +348,6 @@
                //XmlNode node_MaxPumpSwitchCountL = xmlDoc.CreateElement("MaxPumpSwitchCountL");
                //node_MaxPumpSwitchCountL.InnerText = settting.MaxPumpSwitchCountL.ToString();
                //nodeSettting.AppendChild(node_MaxPumpSwitchCountL);
                XmlNode node_SwitchPumpMinuteSpace = xmlDoc.CreateElement("SwitchPumpMinuteSpace");
                node_SwitchPumpMinuteSpace.InnerText = settting.SwitchPumpMinuteSpace.ToString();
@@ -417,7 +389,6 @@
                    }
                }
                XmlNode node_SwitchPumpIgnoreTimes = xmlDoc.CreateElement("SwitchPumpIgnoreTimes");
                node_SwitchPumpIgnoreTimes.InnerText = string.Join("###", stringBuilder不许换泵时间);
                nodeSettting.AppendChild(node_SwitchPumpIgnoreTimes);
@@ -425,7 +396,6 @@
                XmlNode node_OptSortType = xmlDoc.CreateElement("OptSortType");
                node_OptSortType.InnerText = settting.OptSortType.ToString();
                nodeSettting.AppendChild(node_OptSortType);
                List<string> stringBuilder开泵时间 = new List<string>();
                if (settting.OpenPumpTimes != null && settting.OpenPumpTimes.Count > 0)
@@ -442,7 +412,6 @@
                    }
                }
                XmlNode node_OpenPumpTimes = xmlDoc.CreateElement("OpenPumpTimes");
                node_OpenPumpTimes.InnerText = string.Join("###", stringBuilder开泵时间);
                nodeSettting.AppendChild(node_OpenPumpTimes);
@@ -455,15 +424,10 @@
                node_RiverWaterLevelBase.InnerText = settting.RiverWaterLevelBase.ToString();
                nodeSettting.AppendChild(node_RiverWaterLevelBase);
                nodeProject.AppendChild(nodeSettting);
            }
            #endregion
            #endregion setting
            if (requestBase != null)
            {
@@ -499,13 +463,10 @@
                node_StartWaterBoxLevel.InnerText = requestBase.StartReservoirLevel.ToString();
                nodeAnaRequest.AppendChild(node_StartWaterBoxLevel);
                XmlNode node_TotalFlowIn = xmlDoc.CreateElement("TotalFlowIn");
                if (requestBase.TotalFlowIn != null)
                    node_TotalFlowIn.InnerText = requestBase.TotalFlowIn.ToString();
                nodeAnaRequest.AppendChild(node_TotalFlowIn);
                XmlNode node_MaxReservoirLevel = xmlDoc.CreateElement("MaxReservoirLevel");
                node_MaxReservoirLevel.InnerText = requestBase.MaxReservoirLevel == null ? "" : requestBase.MaxReservoirLevel.ToString();
@@ -519,24 +480,18 @@
                node_ReservoirDropFlow.InnerText = requestBase.PerHourFlowOut == null ? "" : string.Join(",", requestBase.PerHourFlowOut);
                nodeAnaRequest.AppendChild(node_ReservoirDropFlow);
                //XmlNode node_MaxReservoirLevel = xmlDoc.CreateElement("MaxReservoirLevel");
                //node_MaxReservoirLevel.InnerText = requestBase.MaxReservoirLevel == null ? "" :  requestBase.MaxReservoirLevel.ToString();
                //nodeAnaRequest.AppendChild(node_MaxReservoirLevel);
                nodeProject.AppendChild(nodeAnaRequest);
            }
            xmlDoc.Save(filePath);
            return true;
        }
        //
        private static CalcModel.AnaPrj ToPrjFromXmlDoc(System.Xml.XmlElement rootNode, out IStation.CalcModel.AnaRequestBase requestBase)
        {
@@ -545,22 +500,22 @@
            if (nodeProjectInfo == null)
                return null;
            CalcModel.AnaPrj prj = new CalcModel.AnaPrj();
            var nodeID = nodeProjectInfo.SelectSingleNode("ID");
            if (nodeID == null)
                return null;
            prj.ID = nodeID.InnerText;
            var nodeName = nodeProjectInfo.SelectSingleNode("Name");
            if (nodeName == null)
                return null;
            prj.Name = nodeName.InnerText;
            var nodeStartTime = nodeProjectInfo.SelectSingleNode("StartTime");
            if (nodeStartTime == null)
                return null;
            prj.StartTime = Convert.ToDateTime(nodeStartTime.InnerText);
            var nodeEndTime = nodeProjectInfo.SelectSingleNode("EndTime");
            if (nodeEndTime == null)
@@ -577,27 +532,23 @@
                return null;
            prj.SumFlow = Convert.ToDouble(nodeSumFlow.InnerText);
            var nodeSumPower = nodeProjectInfo.SelectSingleNode("SumPower");
            if (nodeSumPower == null)
                return null;
            prj.SumPower = Convert.ToDouble(nodeSumPower.InnerText);
            var nodeSumMoney = nodeProjectInfo.SelectSingleNode("SumMoney");
            if (nodeSumMoney == null)
                return null;
            prj.SumMoney = Convert.ToDouble(nodeSumMoney.InnerText);
            var nodeCalcSpaceMinute = nodeProjectInfo.SelectSingleNode("CalcSpaceMinute");
            if (nodeCalcSpaceMinute == null)
                return null;
            prj.CalcSpaceMinute = Convert.ToInt32(nodeCalcSpaceMinute.InnerText);
            #region BlockTimes
            var nodeBlockTimes = nodeProjectInfo.SelectSingleNode("BlockTimes");
            if (nodeBlockTimes == null)
                return null;
@@ -626,7 +577,6 @@
                    }
                }
                if (nodeBlockTime.SelectSingleNode("OpenPumpCount") != null)
                {
                    abt.OpenPumpCount = int.Parse(nodeBlockTime.SelectSingleNode("OpenPumpCount").InnerText);
@@ -639,8 +589,6 @@
                {
                    abt.ReservoirStartHeight = double.Parse(nodeBlockTime.SelectSingleNode("ReservoirStartHeight").InnerText);
                }
                abt.SumFlow = double.Parse(nodeBlockTime.SelectSingleNode("SumFlow").InnerText);
                abt.SumPower = double.Parse(nodeBlockTime.SelectSingleNode("SumPower").InnerText);
@@ -672,13 +620,12 @@
                    abt.PointTimes.Add(pt);
                }
                #endregion
                #endregion PointTimes
                prj.BlockTimes.Add(abt);
            }
            #endregion
            #endregion BlockTimes
            #region PumpSwitchs
@@ -698,7 +645,7 @@
                prj.PumpSwitchs.Add(ps);
            }
            #endregion
            #endregion PumpSwitchs
            var nodeAnaRequest = nodeProjectInfo.SelectSingleNode("AnaRequest");
            if (nodeAnaRequest != null)
@@ -713,10 +660,8 @@
                        requestBase.CalcOptType = CalcModel.eCalcOptType.电费;
                }
                requestBase.StartTime = prj.StartTime;
                requestBase.EndTime = prj.EndTime;
                var nodeIsKnownStartOpenPump = nodeAnaRequest.SelectSingleNode("IsKnownStartOpenPump");
                if (nodeIsKnownStartOpenPump != null && !string.IsNullOrEmpty(nodeIsKnownStartOpenPump.InnerText))
@@ -734,8 +679,6 @@
                        }
                    }
                }
                var nodeTotalFlowIn = nodeAnaRequest.SelectSingleNode("TotalFlowIn");
                if (nodeTotalFlowIn != null && !string.IsNullOrEmpty(nodeTotalFlowIn.InnerText))
@@ -761,7 +704,6 @@
                    requestBase.MaxReservoirLevelTime = nodeMaxMaxReservoirLevelTime.InnerText;
                }
                var nodeReservoirDropFlow = nodeAnaRequest.SelectSingleNode("SpaceFlowOut");
                if (nodeReservoirDropFlow != null && !string.IsNullOrEmpty(nodeReservoirDropFlow.InnerText))
                {
@@ -770,15 +712,14 @@
                    foreach (var s in sss)
                    {
                        requestBase.PerHourFlowOut.Add(Convert.ToDouble(s));
                    }
                    }
                }
            }
            return prj;
        }
        #endregion
        #endregion XML读写
        /// <summary>
        /// æŒ‰å¤©æ•°(小时不匹配)
@@ -792,9 +733,7 @@
            var dsList = new DAL.AnaProject().GetByCreateDay(day);
            if (dsList == null || dsList.Count() == 0) { return null; }
           // IStation.LogHelper.Info(string.Format("GetByCreateDay {0}    Count: {1}   ", dsList.Count));
            // IStation.LogHelper.Info(string.Format("GetByCreateDay {0}    Count: {1}   ", dsList.Count));
            var root_folder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "History");
            if (!System.IO.Directory.Exists(root_folder))
@@ -828,7 +767,6 @@
            }
            return null;
        }
        /// <summary>
        /// æŒ‰å¤©æ•°(小时不匹配)
@@ -852,7 +790,7 @@
                return null;
            }
            dsList.Reverse();
            foreach(var mprj in dsList)
            foreach (var mprj in dsList)
            {
                var file_name = string.Format("{0}_{1}.xml", day.ToString("yyyy-MM-dd"), mprj.PrjID);
                string filePath = System.IO.Path.Combine(month_folder, file_name);
@@ -865,7 +803,7 @@
                        return null;
                    return ToPrjFromXmlDoc(rootNode, out requestBase);
                }
                }
            }
            return null;
        }
@@ -920,8 +858,7 @@
        {
            requestBase = null;
            var dsList = new DAL.AnaProject().GetByEndTimeH相同(endTime);
            if(dsList == null || dsList.Count() == 0) { return null; }
            if (dsList == null || dsList.Count() == 0) { return null; }
            var root_folder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "History");
            if (!System.IO.Directory.Exists(root_folder))
@@ -933,7 +870,7 @@
            foreach (var mprj in dsList)
            {
                var month_folder = System.IO.Path.Combine(root_folder, endTime.AddDays(-1).ToString("yyyy-MM"));
                if ( System.IO.Directory.Exists(month_folder))
                if (System.IO.Directory.Exists(month_folder))
                {
                    var file_name = string.Format("{0}_{1}.xml", endTime.AddDays(-1).ToString("yyyy-MM-dd"), mprj.PrjID);
                    string filePath = System.IO.Path.Combine(month_folder, file_name);
@@ -950,7 +887,7 @@
                }
                month_folder = System.IO.Path.Combine(root_folder, endTime.AddDays(-2).ToString("yyyy-MM"));
                if ( System.IO.Directory.Exists(month_folder))
                if (System.IO.Directory.Exists(month_folder))
                {
                    var file_name = string.Format("{0}_{1}.xml", endTime.AddDays(-2).ToString("yyyy-MM-dd"), mprj.PrjID);
                    var filePath = System.IO.Path.Combine(month_folder, file_name);
@@ -965,11 +902,10 @@
                        return ToPrjFromXmlDoc(rootNode, out requestBase);
                    }
                }
            }
            return null;
        }
        /// <summary>
        /// å°æ—¶åŒ¹é…
        /// </summary>
@@ -982,7 +918,6 @@
            var dsList = new DAL.AnaProject().GetByEndTimeH大于(endTime);
            if (dsList == null || dsList.Count() == 0) { return null; }
            var root_folder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "History");
            if (!System.IO.Directory.Exists(root_folder))
            {
@@ -1025,8 +960,6 @@
                        return ToPrjFromXmlDoc(rootNode, out requestBase);
                    }
                }
            }
            return null;
        }
@@ -1051,7 +984,6 @@
            //}
            //System.IO.File.Delete(filePath);
            return true;
        }
@@ -1120,4 +1052,4 @@
            return files;
        }
    }
}
}