Ejemplo n.º 1
0
        private void DealPatrolPoint(Bll bll, List <InspectionTrack> All, List <InspectionTrack> Delete, List <InspectionTrackHistory> HAdd, WebApiLib.Clients.BaseDataClient client)
        {
            List <PatrolPoint>        ppList  = bll.PatrolPoints.ToList();
            List <PatrolPointHistory> ppHList = bll.PatrolPointHistorys.ToList();
            List <DbModel.Location.AreaAndDev.DevInfo> devList = bll.DevInfos.ToList();

            if (ppList == null)
            {
                ppList = new List <PatrolPoint>();
            }

            if (ppHList == null)
            {
                ppHList = new List <PatrolPointHistory>();
            }

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

            List <PatrolPoint>        PAll    = new List <PatrolPoint>();
            List <PatrolPoint>        PAdd    = new List <PatrolPoint>();
            List <PatrolPoint>        PEdit   = new List <PatrolPoint>();
            List <PatrolPoint>        PDelete = new List <PatrolPoint>();
            List <PatrolPointHistory> PHAdd   = new List <PatrolPointHistory>();

            foreach (InspectionTrack item in All)
            {
                int Id       = item.Id;
                int patrolId = (int)item.Abutment_Id;
                CommunicationClass.SihuiThermalPowerPlant.Models.patrols recv = client.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);
                    PatrolPoint now = ppList.Find(p => p.DeviceId == item2.deviceId && p.ParentId == Id);
                    if (now == null)
                    {
                        now = new PatrolPoint();

                        now.ParentId   = Id;
                        now.StaffCode  = item2.staffCode;
                        now.StaffName  = item2.staffName;
                        now.KksCode    = item2.kksCode;
                        now.DevName    = item2.deviceName;
                        now.DeviceCode = item2.deviceCode;
                        now.DeviceId   = item2.deviceId;
                        if (dev1 != null)
                        {
                            now.DevId = dev1.Id;
                        }

                        PAdd.Add(now);
                    }
                    else
                    {
                        now.ParentId   = Id;
                        now.StaffCode  = item2.staffCode;
                        now.StaffName  = item2.staffName;
                        now.KksCode    = item2.kksCode;
                        now.DevName    = item2.deviceName;
                        now.DeviceCode = item2.deviceCode;
                        now.DeviceId   = item2.deviceId;
                        if (dev1 != null)
                        {
                            now.DevId = dev1.Id;
                        }

                        PEdit.Add(now);
                    }
                }
            }

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

            foreach (InspectionTrackHistory item in HAdd)
            {
                int Id       = item.Id;
                int patrolId = (int)item.Abutment_Id;
                CommunicationClass.SihuiThermalPowerPlant.Models.patrols recv = client.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);
                    PatrolPointHistory history = ppHList.Find(p => p.DeviceId == item2.deviceId && p.ParentId == Id);
                    if (history == null)
                    {
                        history = new PatrolPointHistory();

                        history.ParentId   = Id;
                        history.StaffCode  = item2.staffCode;
                        history.StaffName  = item2.staffName;
                        history.KksCode    = item2.kksCode;
                        history.DevName    = item2.deviceName;
                        history.DeviceCode = item2.deviceCode;
                        history.DeviceId   = item2.deviceId;
                        if (dev1 != null)
                        {
                            history.DevId = dev1.Id;
                        }

                        PHAdd.Add(history);
                    }
                }
            }

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

            PAll.AddRange(PAdd);
            PAll.AddRange(PEdit);
            DealPatrolPointItem(bll, All, HAdd, PAll, PDelete, PHAdd, client);

            return;
        }