diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointScheduleExcludeCustomerOrgs/GetCustomerOrgThreeListDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleExcludeCustomerOrgs/GetCustomerOrgThreeListDto.cs
new file mode 100644
index 0000000..bc9f5f2
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleExcludeCustomerOrgs/GetCustomerOrgThreeListDto.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.AppointScheduleExcludeCustomerOrgs
+{
+    public class GetCustomerOrgThreeListDto
+    {
+        //组织Id
+        public Guid CustomerOrgId { get; set; }
+        //组织名称
+        public string CustomerOrgName { get; set; }
+        //父节点Id
+        public Guid? ParentId { get; set; }
+        /// 
+        /// 用来做递归的 新用法
+        /// 
+        public string Code { get; set; }
+
+        public int DisplayOrder { get; set; }
+
+        public List TreeChildren { get; set; }
+    }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointScheduleExcludeCustomerOrgs/GetExcludeCustomerOrgListDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleExcludeCustomerOrgs/GetExcludeCustomerOrgListDto.cs
new file mode 100644
index 0000000..ba8c2b8
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleExcludeCustomerOrgs/GetExcludeCustomerOrgListDto.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.AppointScheduleExcludeCustomerOrgs
+{
+    public class GetExcludeCustomerOrgListDto
+    {
+        /// 
+        /// 单位Id
+        /// 
+        public Guid CustomerOrgId { get; set; }
+    }
+}
diff --git a/src/Shentun.WebPeis.Application/AppointScheduleExcludeCustomerOrgs/AppointScheduleExcludeCustomerOrgAppService.cs b/src/Shentun.WebPeis.Application/AppointScheduleExcludeCustomerOrgs/AppointScheduleExcludeCustomerOrgAppService.cs
index 971930a..aabc3e2 100644
--- a/src/Shentun.WebPeis.Application/AppointScheduleExcludeCustomerOrgs/AppointScheduleExcludeCustomerOrgAppService.cs
+++ b/src/Shentun.WebPeis.Application/AppointScheduleExcludeCustomerOrgs/AppointScheduleExcludeCustomerOrgAppService.cs
@@ -1,5 +1,7 @@
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
+using Shentun.WebPeis.AppointSchedules;
+using Shentun.WebPeis.Enums;
 using Shentun.WebPeis.Models;
 using System;
 using System.Collections.Generic;
@@ -20,11 +22,13 @@ namespace Shentun.WebPeis.AppointScheduleExcludeCustomerOrgs
     public class AppointScheduleExcludeCustomerOrgAppService : ApplicationService
     {
         private readonly IRepository _appointScheduleExcludeCustomerOrgRepository;
+        private readonly IRepository _customerOrgRepository;
         public AppointScheduleExcludeCustomerOrgAppService(
-            IRepository appointScheduleExcludeCustomerOrgRepository
-            )
+            IRepository appointScheduleExcludeCustomerOrgRepository,
+            IRepository customerOrgRepository)
         {
             _appointScheduleExcludeCustomerOrgRepository = appointScheduleExcludeCustomerOrgRepository;
+            _customerOrgRepository = customerOrgRepository;
         }
 
         /// 
@@ -62,5 +66,84 @@ namespace Shentun.WebPeis.AppointScheduleExcludeCustomerOrgs
                 await _appointScheduleExcludeCustomerOrgRepository.InsertManyAsync(appointScheduleExcludeCustomerOrgs);
             }
         }
+
+
+        /// 
+        /// 查询预约计划对应的禁止单位
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/AppointScheduleExcludeCustomerOrg/GetExcludeCustomerOrgList")]
+        public async Task> GetExcludeCustomerOrgListAsync(AppointScheduleIdInputDto input)
+        {
+            if (input.AppointScheduleId == Guid.Empty)
+            {
+                throw new UserFriendlyException("预约计划ID不能为空");
+            }
+            //删除
+            var entListDto = (await _appointScheduleExcludeCustomerOrgRepository.GetListAsync(d => d.AppointScheduleId == input.AppointScheduleId))
+                .Select(s => new GetExcludeCustomerOrgListDto
+                {
+                    CustomerOrgId = s.CustomerOrgId
+                }).ToList();
+
+            return entListDto;
+        }
+
+        /// 
+        /// 获取单位树型结构
+        /// 
+        /// 
+        [HttpPost("api/app/AppointScheduleExcludeCustomerOrg/GetCustomerOrgThreeList")]
+        public async Task> GetCustomerOrgThreeListAsync()
+        {
+
+            List result = new List();
+
+            var customerOrgList = await _customerOrgRepository.GetListAsync(m => m.CustomerOrgId != GuidFlag.PersonCustomerOrgId);
+
+            var items = from p in customerOrgList.OrderByDescending(o => o.DisplayOrder).AsParallel()
+                        select new GetCustomerOrgThreeListDto()
+                        {
+                            CustomerOrgId = p.CustomerOrgId,
+                            ParentId = p.ParentId,
+                            Code = p.PathCode,
+                            CustomerOrgName = p.CustomerOrgName,
+                            DisplayOrder = p.DisplayOrder,
+                            TreeChildren = new List()
+                        };
+
+            var customerOrgTreeChildList = GetTree(items.ToList(), null);
+
+
+
+            result.AddRange(customerOrgTreeChildList);
+
+
+            return result;
+        }
+
+        /// 
+        /// 使用parentId进行递归
+        /// 
+        /// 
+        /// 
+        /// 
+        private List GetTree(List items, Guid? parentId)
+        {
+            return (from p in items.AsParallel()
+                    where p.ParentId == parentId
+                    let subs = GetTree(items, p.CustomerOrgId)
+                    select new GetCustomerOrgThreeListDto()
+                    {
+                        CustomerOrgId = p.CustomerOrgId,
+                        ParentId = p.ParentId,
+                        Code = p.Code,
+                        CustomerOrgName = p.CustomerOrgName,
+                        DisplayOrder = p.DisplayOrder,
+                        TreeChildren = subs.ToList()
+                    }
+                    ).ToList();
+        }
     }
 }
diff --git a/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs b/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs
index 2ac7f78..1e3d2f7 100644
--- a/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs
+++ b/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs
@@ -2,6 +2,7 @@
 using Microsoft.AspNetCore.Mvc;
 using Nito.AsyncEx.Synchronous;
 using Shentun.WebPeis.AppointScheduleTimes;
+using Shentun.WebPeis.CustomerOrgs;
 using Shentun.WebPeis.Models;
 using Shentun.WebPeis.OrganizationUnits;
 using Shentun.WebPeis.SysParmValues;
@@ -31,7 +32,7 @@ namespace Shentun.WebPeis.AppointSchedules
         private readonly SysParmValueManager _sysParmValueManager;
         private readonly WebPeisOrganizationUnitManager _webPeisOrganizationUnitManager;
         private readonly IRepository _appointScheduleExcludeCustomerOrgRepository;
-
+        private readonly IRepository _customerOrgRepository;
         public AppointScheduleAppService(IRepository appointScheduleRepository,
              CacheService cacheService,
              AppointScheduleManager appointScheduleManager,
@@ -41,7 +42,8 @@ namespace Shentun.WebPeis.AppointSchedules
              SysParmValueManager sysParmValueManager,
              WebPeisOrganizationUnitManager webPeisOrganizationUnitManager,
              IRepository appointScheduleTemplateTimeRepository,
-             IRepository appointScheduleExcludeCustomerOrgRepository)
+             IRepository appointScheduleExcludeCustomerOrgRepository,
+             IRepository customerOrgRepository)
         {
             _appointScheduleRepository = appointScheduleRepository;
             _cacheService = cacheService;
@@ -53,6 +55,7 @@ namespace Shentun.WebPeis.AppointSchedules
             _webPeisOrganizationUnitManager = webPeisOrganizationUnitManager;
             _appointScheduleTemplateTimeRepository = appointScheduleTemplateTimeRepository;
             _appointScheduleExcludeCustomerOrgRepository = appointScheduleExcludeCustomerOrgRepository;
+            _customerOrgRepository = customerOrgRepository;
         }
 
         /// 
@@ -120,8 +123,18 @@ namespace Shentun.WebPeis.AppointSchedules
                 bool isAdd = false;
                 if (input != null && input.CustomerOrgId != null)
                 {
-                    if (appointScheduleExcludeCustomerOrgIds.FirstOrDefault(f => f.appointScheduleId == item.Key.AppointScheduleId
-               && f.customerOrgId == input.CustomerOrgId) == null)
+                    List customerOrgIds = new List();
+                    var customerOrgIdList = appointScheduleExcludeCustomerOrgIds.Where(m => m.appointScheduleId == item.Key.AppointScheduleId);
+                    if (customerOrgIdList.Any())
+                    {
+                        foreach (var customerOrgId in customerOrgIdList)
+                        {
+                            var customerOrgIdsTemp = await GetCustomerOrgChildrenId(input.CustomerOrgId.Value);
+                            customerOrgIds.AddRange(customerOrgIdsTemp);
+                        }
+                    }
+
+                    if (!customerOrgIds.Any() || !customerOrgIds.Contains(input.CustomerOrgId))
                     {
                         isAdd = true;
                     }
@@ -147,14 +160,6 @@ namespace Shentun.WebPeis.AppointSchedules
 
 
 
-            //var list = appointSchedules.GroupBy(o => o.appointSchedule)
-            // .Select(x => new AppointScheduleDateDto()
-            // {
-            //     AppointScheduleId = x.Key.AppointScheduleId,
-            //     AppointDate = x.Key.AppointDate,
-            //     IsWork = x.Key.IsWork,
-            //     IsFull = x.Key.AppointScheduleTimes.Sum(m => m.NumberLimit) <= x.Key.AppointScheduleTimes.Sum(m => m.AppointNumber) ? 'Y' : 'N'
-            // }).ToList();
             return entListDto;
         }
 
@@ -381,5 +386,37 @@ namespace Shentun.WebPeis.AppointSchedules
             }
         }
 
+
+
+        /// 
+        /// 获取包含子级的ID
+        /// 
+        /// 
+        /// 
+        private async Task> GetCustomerOrgChildrenId(Guid CustomerOrgId)
+        {
+
+            var customerOrg = await _customerOrgRepository.GetAsync(g => g.CustomerOrgId == CustomerOrgId);
+            var customerOrgEntList = await _customerOrgRepository.GetListAsync(o => o.PathCode.StartsWith(customerOrg.PathCode));
+            List CustomerOrgIds = new List();
+
+            GetChildren(customerOrgEntList, CustomerOrgId, CustomerOrgIds);
+
+            return CustomerOrgIds;
+        }
+
+        private void GetChildren(List customerOrgEntList, Guid CustomerOrgId, List CustomerOrgIds)
+        {
+            CustomerOrgIds.Add(CustomerOrgId);
+            var entlist = customerOrgEntList.Where(m => m.ParentId == CustomerOrgId).ToList();
+            if (entlist.Count > 0)
+            {
+                foreach (var ent in entlist)
+                {
+                    GetChildren(customerOrgEntList, ent.CustomerOrgId, CustomerOrgIds);
+                }
+            }
+        }
+
     }
 }
diff --git a/src/Shentun.WebPeis.Application/Persons/PersonAppService.cs b/src/Shentun.WebPeis.Application/Persons/PersonAppService.cs
index 058f195..6d83f7b 100644
--- a/src/Shentun.WebPeis.Application/Persons/PersonAppService.cs
+++ b/src/Shentun.WebPeis.Application/Persons/PersonAppService.cs
@@ -447,7 +447,6 @@ namespace Shentun.WebPeis.Persons
         [HttpPost("api/app/Person/GetMedicalTimesListByPersonId")]
         public async Task> GetMedicalTimesListByPersonIdAsync(PersonIdInputDto input)
         {
-
             var entityList = (from user in await _identityUserRepository.GetQueryableAsync()
                               join person in await _repository.GetQueryableAsync()
                               on user.Id equals person.PersonId
@@ -483,6 +482,7 @@ namespace Shentun.WebPeis.Persons
                          join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.RegisterCheckId equals registerCheckAsbitem.RegisterCheckId
                          join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.AsbitemId
                          where patientRegister.PatientRegisterId == input.PatientRegisterId
+                         && registerCheck.IsPacsCheck == 'Y'
                          select new
                          {
                              registerCheck.CheckRequestNo,