| 
					
				 | 
			
			
				@@ -0,0 +1,220 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using AutoMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using MySqlX.XDevAPI.Relational; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using OASystem.Domain; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using OASystem.Domain.Dtos.Groups; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using OASystem.Domain.Entities.Groups; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using OASystem.Domain.Entities.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using OASystem.Domain.ViewModels.Groups; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using Org.BouncyCastle.Utilities.Collections; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Collections.Generic; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Linq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Text; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Threading.Tasks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace OASystem.Infrastructure.Repositories.Groups 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public class TaskAssignmentRepository : BaseRepository<Grp_GroupsTaskAssignment, Grp_GroupsTaskAssignment> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly IMapper _mapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public TaskAssignmentRepository(SqlSugarClient sqlSugar, IMapper mapper) : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            base(sqlSugar) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this._mapper = mapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task<Result> GetTaskAssignmen() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Result result = new Result() { Code = -2, Msg = "未知错误" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //团组下拉框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<dynamic> _DelegationInfos = new List<dynamic>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<Grp_DelegationInfo> grp_DelegationInfos=_sqlSugar.Queryable<Grp_DelegationInfo>().Where(a=>a.IsDel == 0 && a.TourCode !="" && a.IsState == 0).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var Item in grp_DelegationInfos) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var data = new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Id = Item.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Name = Item.TeamName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _DelegationInfos.Add(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //任务下拉框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<dynamic> _SetData = new List<dynamic>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<Sys_SetData> sys_SetData = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.IsDel == 0 && a.Name != "其他款项" && a.STid ==16).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var Item in sys_SetData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var data = new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Id = Item.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Name = Item.Name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _SetData.Add(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //人员安排列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<dynamic> _User = new List<dynamic>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<Sys_Users> sys_User = _sqlSugar.Queryable<Sys_Users>().Where(a => a.IsDel == 0 &&a.Id!=4).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var Item in sys_User) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var data = new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Id = Item.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Name = Item.CnName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _User.Add(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var dataList = new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DelegationInfos=_DelegationInfos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    SetData= _SetData, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    User= _User 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result=new Result(){ Code = 0, Msg = "成功", Data = dataList }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            catch (Exception) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result = new Result() { Code = -2, Msg = "未知错误" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task<Result> GetTaskAssignmenOp(TaskAssignmenDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Result result = new Result() { Code = -2, Msg = "未知错误" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<int> id = new List<int>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<Grp_GroupsTaskAssignment> _GroupsTaskAssignments = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(a=>a.DIId==dto.DIId && a.CTId==dto.CTId && a.IsDel==0).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach(var Group in _GroupsTaskAssignments)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    id.Add(Group.UId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<int> intersection = id.Intersect(dto.UIdStr).ToList();//交集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<int> del = id.Except(dto.UIdStr).ToList();//差集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<int> union = id.Union(dto.UIdStr).ToList();//并集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int i = 0; i < del.Count; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   await _sqlSugar.Updateable<Grp_GroupsTaskAssignment>().Where(a => a.UId == del[i] && a.DIId==dto.DIId && a.CTId==dto.CTId).SetColumns(a => new Grp_GroupsTaskAssignment() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        IsDel = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        DeleteUserId = dto.CreateUserId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }).ExecuteCommandAsync(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //去掉交集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var item in intersection) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    union.Remove(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //去掉差集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var item in del) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    union.Remove(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //需添加的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var item in union) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Grp_GroupsTaskAssignment AddData= _mapper.Map<Grp_GroupsTaskAssignment>(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AddData.UId = item; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Grp_GroupsTaskAssignment addQuery = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().First(a=>a.DIId==AddData.DIId && a.UId==AddData.UId && a.CTId==AddData.CTId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (addQuery != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        await _sqlSugar.Updateable<Grp_GroupsTaskAssignment>().Where(a =>a.Id==addQuery.Id).SetColumns(a => new Grp_GroupsTaskAssignment() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            IsDel = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            DeleteUserId = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            CreateUserId = AddData.CreateUserId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            CreateTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }).ExecuteCommandAsync(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        int AddId = await AddAsyncReturnId(AddData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result = new Result() { Code = 0, Msg = "保存成功!" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            catch (Exception) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result = new Result() { Code = -2, Msg = "保存失败,未知错误" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task<Result> TaskAssignmenQuery(TaskAssignmenQueryDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Result result = new Result() { Code = -2, Msg = "未知错误" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                string sqlWhere = string.Empty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (dto.DIId!=0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sqlWhere += string.Format(@" And DIId ={0}", dto.DIId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return result = new Result() { Code = -1, Msg = "暂无数据" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (dto.CTId!=0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sqlWhere += string.Format(@" And CTId ={0}", dto.CTId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return result = new Result() { Code = -1, Msg = "暂无数据" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sqlWhere += string.Format(@" And IsDel={0} ", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!string.IsNullOrEmpty(sqlWhere.Trim())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Regex r = new Regex("And"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sqlWhere = r.Replace(sqlWhere, "Where", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                string sql = string.Format(@"select * from Grp_GroupsTaskAssignment {0}", sqlWhere); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<Grp_GroupsTaskAssignment> GroupsTaskAssignment = await _sqlSugar.SqlQueryable<Grp_GroupsTaskAssignment>(sql).ToListAsync(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Grp_DelegationInfo grp_DelegationInfo = new Grp_DelegationInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (GroupsTaskAssignment.Count!=0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    List<int> UserId = new List<int>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    foreach (var item in GroupsTaskAssignment) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        UserId.Add(item.UId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    grp_DelegationInfo = _sqlSugar.Queryable<Grp_DelegationInfo>().First(a => a.Id == GroupsTaskAssignment[0].DIId && a.IsDel==0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var data = new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TaskAssignment = GroupsTaskAssignment[0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        UserStr = UserId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        DelegationInfo = grp_DelegationInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    result = new Result() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Code = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Msg = "查询成功!", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Data = data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    result = new Result() { Code = -1, Msg = "暂无数据" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            catch (Exception) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result = new Result() { Code = -2, Msg = "未知错误" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |