示例#1
0
        private void DealPatrolPoint(List <DbModel.Location.Work.InspectionTrack> All, List <DbModel.Location.Work.InspectionTrack> Delete, List <DbModel.LocationHistory.Work.InspectionTrackHistory> HAdd, WebApiLib.Clients.BaseDataClient client)
        {
            Log.Info(LogTags.Inspection, string.Format("DealPatrolPoint Start"));

            Bll bll = Bll.NewBllNoRelation();
            List <DbModel.Location.Work.PatrolPoint> ppList = bll.PatrolPoints.ToList();
            List <DbModel.LocationHistory.Work.PatrolPointHistory> ppHList = bll.PatrolPointHistorys.ToList();

            //List<DbModel.Location.AreaAndDev.DevInfo> devList = bll.DevInfos.ToList();
            if (ppList == null)
            {
                ppList = new List <DbModel.Location.Work.PatrolPoint>();
            }

            if (ppHList == null)
            {
                ppHList = new List <DbModel.LocationHistory.Work.PatrolPointHistory>();
            }

            //if (devList == null)
            //{
            //    devList = new List<DbModel.Location.AreaAndDev.DevInfo>();
            //}

            List <DbModel.Location.Work.PatrolPoint> PAll                = new List <DbModel.Location.Work.PatrolPoint>();
            List <DbModel.Location.Work.PatrolPoint> PAdd                = new List <DbModel.Location.Work.PatrolPoint>();
            List <DbModel.Location.Work.PatrolPoint> PEdit               = new List <DbModel.Location.Work.PatrolPoint>();
            List <DbModel.Location.Work.PatrolPoint> PDelete             = new List <DbModel.Location.Work.PatrolPoint>();
            List <DbModel.LocationHistory.Work.PatrolPointHistory> PHAdd = new List <DbModel.LocationHistory.Work.PatrolPointHistory>();

            //foreach (DbModel.Location.Work.InspectionTrack item in All)
            for (int i = 0; i < All.Count; i++)
            {
                if (All.Count > 100)
                {
                    if (i % 10 == 0)
                    {
                        Log.Info(LogTags.Inspection, string.Format("DealPatrolPoint Progress1(All) :{0}/{1}", i + 1, All.Count));
                    }
                }
                else
                {
                    Log.Info(LogTags.Inspection, string.Format("DealPatrolPoint Progress1(All) :{0}/{1}", i + 1, All.Count));
                }

                var item     = All[i];
                int Id       = item.Id;
                int patrolId = (int)item.Abutment_Id;
                CommunicationClass.SihuiThermalPowerPlant.Models.patrols recv = client.GetPatrolDetail(patrolId);
                // CommunicationClass.SihuiThermalPowerPlant.Models.patrols recv = Getcheckpoints(patrolId);

                if (recv == null || recv.route.Count() <= 0)
                {
                    continue;
                }

                foreach (checkpoints item2 in recv.route)
                {
                    //DbModel.Location.AreaAndDev.DevInfo dev1 = devList.Find(p => p.KKS == item2.kksCode);
                    DbModel.Location.Work.PatrolPoint now = ppList.Find(p => p.DeviceId == item2.deviceId && p.ParentId == Id);
                    if (now == null)
                    {
                        now = new DbModel.Location.Work.PatrolPoint();
                        SetPatrolPointProperty(Id, item2, now);
                        PAdd.Add(now);
                    }
                    else
                    {
                        SetPatrolPointProperty(Id, item2, now);
                        PEdit.Add(now);
                    }
                }
            }

            foreach (DbModel.Location.Work.InspectionTrack item in Delete)
            {
                int Id = item.Id;
                List <DbModel.Location.Work.PatrolPoint> lstDelete = ppList.FindAll(p => p.ParentId == Id).ToList();
                if (lstDelete != null && lstDelete.Count() > 0)
                {
                    PDelete.AddRange(lstDelete);
                }
            }

            //foreach (DbModel.LocationHistory.Work.InspectionTrackHistory item in HAdd)
            for (int i = 0; i < HAdd.Count; i++)
            {
                if (All.Count > 100)
                {
                    if (i % 20 == 0)
                    {
                        Log.Info(LogTags.Inspection, string.Format("DealPatrolPoint Progress2(HAdd) :{0}/{1}", i + 1, HAdd.Count));
                    }
                }
                else
                {
                    Log.Info(LogTags.Inspection, string.Format("DealPatrolPoint Progress2(HAdd) :{0}/{1}", i + 1, HAdd.Count));
                }

                DbModel.LocationHistory.Work.InspectionTrackHistory item = HAdd[i];
                int Id       = item.Id;
                int patrolId = (int)item.Abutment_Id;
                CommunicationClass.SihuiThermalPowerPlant.Models.patrols recv = client.GetPatrolDetail(patrolId);
                //CommunicationClass.SihuiThermalPowerPlant.Models.patrols recv = Getcheckpoints(patrolId);
                if (recv == null || recv.route.Count() <= 0)
                {
                    continue;
                }

                foreach (CommunicationClass.SihuiThermalPowerPlant.Models.checkpoints item2 in recv.route)
                {
                    //DbModel.Location.AreaAndDev.DevInfo dev1 = devList.Find(p => p.KKS == item2.kksCode);
                    DbModel.LocationHistory.Work.PatrolPointHistory history = ppHList.Find(p => p.DeviceId == item2.deviceId && p.ParentId == Id);
                    if (history == null)
                    {
                        history = CreatePatrolPointHistory(Id, item2);
                        PHAdd.Add(history);
                    }
                }
            }


            Log.Info(LogTags.Inspection, string.Format("DealPatrolPoint Edit...."));

            bll.PatrolPoints.AddRange(PAdd);
            bll.PatrolPoints.EditRange(PEdit);
            bll.PatrolPoints.RemoveList(PDelete);
            bll.PatrolPointHistorys.AddRange(PHAdd);

            PAll.AddRange(PAdd);
            PAll.AddRange(PEdit);
            bll.Dispose();

            Log.Info(LogTags.Inspection, string.Format("DealPatrolPoint End...."));
            DealPatrolPointItem(All, HAdd, PAll, PDelete, PHAdd, client);

            return;
        }
示例#2
0
        private void DealPatrolPointItem(List <DbModel.Location.Work.InspectionTrack> All, List <DbModel.LocationHistory.Work.InspectionTrackHistory> HAdd, List <DbModel.Location.Work.PatrolPoint> PAll, List <DbModel.Location.Work.PatrolPoint> PDelete, List <DbModel.LocationHistory.Work.PatrolPointHistory> PHAdd, WebApiLib.Clients.BaseDataClient client)
        {
            try
            {
                Bll bll = Bll.NewBllNoRelation();
                List <DbModel.Location.Work.PatrolPointItem> ppiList = bll.PatrolPointItems.ToList();
                List <DbModel.LocationHistory.Work.PatrolPointItemHistory> ppiHList = bll.PatrolPointItemHistorys.ToList();
                if (ppiList == null)
                {
                    ppiList = new List <DbModel.Location.Work.PatrolPointItem>();
                }

                if (ppiHList == null)
                {
                    ppiHList = new List <DbModel.LocationHistory.Work.PatrolPointItemHistory>();
                }

                List <DbModel.Location.Work.PatrolPointItem> PIAll                = new List <DbModel.Location.Work.PatrolPointItem>();
                List <DbModel.Location.Work.PatrolPointItem> PIAdd                = new List <DbModel.Location.Work.PatrolPointItem>();
                List <DbModel.Location.Work.PatrolPointItem> PIEdit               = new List <DbModel.Location.Work.PatrolPointItem>();
                List <DbModel.Location.Work.PatrolPointItem> PIDelete             = new List <DbModel.Location.Work.PatrolPointItem>();
                List <DbModel.LocationHistory.Work.PatrolPointItemHistory> PIHAdd = new List <DbModel.LocationHistory.Work.PatrolPointItemHistory>();

                for (int i = 0; i < PAll.Count; i++)
                //foreach (DbModel.Location.Work.PatrolPoint item in PAll)
                {
                    var item = PAll[i];

                    if (All.Count > 1000)
                    {
                        if (i % 20 == 0)
                        {
                            Log.Info(LogTags.Inspection, string.Format("DealPatrolPointItem Progress1(PAll) :{0}/{1}", i + 1, PAll.Count));
                        }
                    }
                    else
                    {
                        Log.Info(LogTags.Inspection, string.Format("DealPatrolPointItem Progress1(PAll) :{0}/{1}", i + 1, PAll.Count));
                    }


                    try
                    {
                        int    Id       = item.Id;
                        string deviceId = item.DeviceId;
                        int    ParentId = item.ParentId;
                        DbModel.Location.Work.InspectionTrack it = All.Find(p => p.Id == ParentId);
                        if (it == null)
                        {
                            continue;
                        }

                        int patrolId = (int)it.Abutment_Id;
                        var recv     = client.Getcheckresults(patrolId, deviceId);
                        //  CommunicationClass.SihuiThermalPowerPlant.Models.checkpoints recv = Getcheckresults(patrolId, deviceId);
                        if (recv == null || recv.checks.Count() <= 0)
                        {
                            continue;
                        }

                        foreach (results item2 in recv.checks)
                        {
                            try
                            {
                                if (isAllNew)
                                {
                                    var now = CreatePatrolPointItem(Id, item2);
                                    PIAdd.Add(now);
                                }
                                else
                                {
                                    var now = ppiList.Find(p => p.CheckId == item2.checkId && p.ParentId == Id);

                                    if (now == null)
                                    {
                                        now = CreatePatrolPointItem(Id, item2);
                                        PIAdd.Add(now);
                                    }
                                    else
                                    {
                                        SetCheckTime(item2, now);

                                        now.CheckResult = item2.checkResult;
                                        PIEdit.Add(now);
                                    }
                                }
                            }
                            catch (Exception ex1)
                            {
                                Log.Error(LogTags.Inspection, ex1);
                            }
                        }

                        if (PIAdd.Count > 1000)
                        {
                            bll.PatrolPointItems.AddRange(PIAdd);
                            PIAdd.Clear();
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(LogTags.Inspection, ex);
                    }
                }

                foreach (var item in PDelete)
                {
                    int Id = item.Id;
                    List <DbModel.Location.Work.PatrolPointItem> lstDelete = ppiList.FindAll(p => p.ParentId == Id).ToList();
                    if (lstDelete != null && lstDelete.Count() > 0)
                    {
                        PIDelete.AddRange(lstDelete);
                    }
                }
                for (int i = 0; i < PHAdd.Count; i++)
                //foreach (var item in PHAdd)
                {
                    if (All.Count > 10000)
                    {
                        if (i % 100 == 0)
                        {
                            Log.Info(LogTags.Inspection, string.Format("DealPatrolPointItem Progress2(PHAdd) :{0}/{1}", i + 1, PHAdd.Count));
                        }
                    }
                    else
                    {
                        Log.Info(LogTags.Inspection, string.Format("DealPatrolPointItem Progress2(PHAdd) :{0}/{1}", i + 1, PHAdd.Count));
                    }

                    var item = PHAdd[i];
                    try
                    {
                        int    Id       = item.Id;
                        string deviceId = item.DeviceId;
                        int    ParentId = item.ParentId;
                        DbModel.LocationHistory.Work.InspectionTrackHistory ith = HAdd.Find(p => p.Id == ParentId);
                        if (ith == null)
                        {
                            continue;
                        }
                        int patrolId = (int)ith.Abutment_Id;
                        var recv     = client.Getcheckresults(patrolId, deviceId);
                        //CommunicationClass.SihuiThermalPowerPlant.Models.checkpoints recv = Getcheckresults(patrolId, deviceId);

                        if (recv == null || recv.checks.Count() <= 0)
                        {
                            continue;
                        }

                        foreach (results item2 in recv.checks)
                        {
                            if (isAllNew)
                            {
                                var history = CreatePatrolPointItemHistory(Id, item2);
                                PIHAdd.Add(history);
                            }
                            else
                            {
                                var history = bll.PatrolPointItemHistorys.Find(p => p.CheckId == item2.checkId && p.ParentId == Id);
                                if (history == null)
                                {
                                    history = CreatePatrolPointItemHistory(Id, item2);
                                    PIHAdd.Add(history);
                                }
                            }
                        }
                        if (PIHAdd.Count > 1000)
                        {
                            bll.PatrolPointItemHistorys.AddRange(PIHAdd);
                            PIHAdd.Clear();
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(LogTags.Inspection, ex);
                    }
                }

                bll.PatrolPointItems.AddRange(PIAdd);
                bll.PatrolPointItems.EditRange(PIEdit);
                bll.PatrolPointItems.RemoveList(PIDelete);
                bll.PatrolPointItemHistorys.AddRange(PIHAdd);
                bll.Dispose();

                isAllNew = false;
            }
            catch (Exception ex)
            {
                string strMessage = ex.Message;
                Log.Error(LogTags.Inspection, ex);
            }
            return;
        }
示例#3
0
        private DbModel.Location.Work.InspectionTrackList DealInspectionTrack(WebApiLib.Clients.BaseDataClient client, DateTime dtBegin, DateTime dtEnd, bool bFlag)
        {
            DbModel.Location.Work.InspectionTrackList TrackList = new DbModel.Location.Work.InspectionTrackList();
            try
            {
                Log.Info(LogTags.Inspection, string.Format("DealInspectionTrack Start {0}-{1}", dtBegin, dtEnd));
                //http://172.16.100.22/api/patrols?startDate=1563066082&endDate=1563325282&offset=0&limit=10000
                var All         = new List <DbModel.Location.Work.InspectionTrack>();
                var newList     = new List <DbModel.Location.Work.InspectionTrack>();
                var changedList = new List <DbModel.Location.Work.InspectionTrack>();
                var deleteList  = new List <DbModel.Location.Work.InspectionTrack>();
                var newHisList  = new List <DbModel.LocationHistory.Work.InspectionTrackHistory>();

                var  changeHisList = new List <DbModel.LocationHistory.Work.InspectionTrackHistory>();
                long lNow          = GetNowDateStamp();

                var recv = client.GetPatrolList(dtBegin, dtEnd); //从WebApi获取
                                                                 // var recv = Getinspectionlist();
                if (recv == null)
                {
                    return(null);
                }
                Log.Info(LogTags.Inspection, string.Format("GetPatrolList:" + recv.Count));

                Bll bll    = Bll.NewBllNoRelation();
                var itList = bll.InspectionTracks.ToList();//当前的巡检轨迹
                Log.Info(LogTags.Inspection, string.Format("InspectionTracks:" + itList.Count));

                var itHList = bll.InspectionTrackHistorys.ToList();//历史巡检轨迹
                Log.Info(LogTags.Inspection, string.Format("InspectionTrackHistorys:" + itList.Count));

                foreach (patrols item in recv)
                {
                    var now     = itList.Find(p => p.Abutment_Id == item.id);//数据库中已经存在该轨迹
                    var history = itHList.Find(p => p.Abutment_Id == item.id);

                    if (item.endTime >= lNow &&
                        !(item.state == "已完成" || item.state == "已过期")
                        )
                    {
                        if (now == null)
                        {
                            now = CreateInspectionTrack(item);
                            newList.Add(now);
                        }
                        else
                        {
                            if (now.State != item.state)
                            {
                                now.State = item.state;
                                changedList.Add(now);
                            }
                        }
                    }
                    else
                    {
                        if (now != null)
                        {
                            now.State = item.state;
                            deleteList.Add(now);
                        }

                        if (history == null)
                        {
                            history = CreateInspectionTrackHistory(item);
                            newHisList.Add(history);
                        }
                        else
                        {
                            if (history.State != item.state)
                            {
                                history.State = item.state;
                                changeHisList.Add(history);
                            }
                        }
                    }
                }

                Log.Info(LogTags.Inspection, string.Format("DealInspectionTrack Edit... newList:{0},changedList:{1},deleteList:{2},changeHisList:{3},newHisList:{4}"
                                                           , newList.Count, changedList.Count, deleteList.Count, changeHisList.Count, newHisList.Count));

                bll.InspectionTracks.AddRange(newList);               //添加
                bll.InspectionTracks.EditRange(changedList);          //修改
                bll.InspectionTracks.RemoveList(deleteList);          //删除

                bll.InspectionTrackHistorys.EditRange(changeHisList); //历史轨迹
                bll.InspectionTrackHistorys.AddRange(newHisList);     //历史轨迹

                All.AddRange(newList);
                All.AddRange(changedList);
                bll.Dispose();



                DealPatrolPoint(All, deleteList, newHisList, client);


                TrackList.AddTrack    = newList;
                TrackList.ReviseTrack = changedList;
                TrackList.DeleteTrack = deleteList;

                Log.Info(LogTags.Inspection, string.Format("DealInspectionTrack End"));
                return(TrackList);
            }
            catch (Exception ex)
            {
                Log.Error(LogTags.Inspection, string.Format("DealInspectionTrack :" + ex));
                return(TrackList);
            }
        }