示例#1
0
 public void Add(ConstructTask consTask, string isWBSRelevance)
 {
     using (pm2Entities entities = new pm2Entities())
     {
         (from m in entities.Bud_Task
          where m.TaskId == consTask.taskId
          select m).FirstOrDefault <Bud_Task>();
         Bud_ConsReport report = (from m in entities.Bud_ConsReport
                                  where m.ConsReportId == consTask.reportId
                                  select m).FirstOrDefault <Bud_ConsReport>();
         Bud_ConsTask task = new Bud_ConsTask {
             TaskId           = consTask.taskId,
             ConsTaskId       = consTask.Id,
             Note             = consTask.Note,
             Bud_ConsReport   = report,
             CompleteQuantity = consTask.CompleteQuantity,
             WorkContent      = consTask.WorkContent
         };
         entities.AddToBud_ConsTask(task);
         entities.SaveChanges();
         if (isWBSRelevance == "1")
         {
             var list = (from m in entities.Bud_TaskResource
                         where m.Bud_Task.TaskId == consTask.taskId
                         select new { resourceId = m.Res_Resource.ResourceId, resourcePrice = m.ResourcePrice, resourceQuantity = m.ResourceQuantity }).ToList();
             List <BudModifyTaskRes> first = (from mt in this.budModifyTaskSer
                                              join m in this.budModifySer on mt.ModifyId equals m.ModifyId
                                              join mtr in this.budModifyTaskResSer on mt.ModifyTaskId equals mtr.ModifyTaskId
                                              where (mt.TaskId == consTask.taskId) && (m.Flowstate == 1)
                                              select mtr).ToList <BudModifyTaskRes>();
             List <BudModifyTaskRes> second = (from mt in this.budModifyTaskSer
                                               join m in this.budModifySer on mt.ModifyId equals m.ModifyId
                                               join mtr in this.budModifyTaskResSer on mt.ModifyTaskId equals mtr.ModifyTaskId
                                               where (mt.ModifyTaskId == consTask.taskId) && (m.Flowstate == 1)
                                               select mtr).ToList <BudModifyTaskRes>();
             first = first.Union <BudModifyTaskRes>(second).ToList <BudModifyTaskRes>();
             using (var enumerator = list.GetEnumerator())
             {
                 System.Func <BudModifyTaskRes, bool> predicate = null;
                 while (enumerator.MoveNext())
                 {
                     var     resx      = enumerator.Current;
                     decimal num       = 0M;
                     decimal unitPrice = 0M;
                     decimal num3      = 0M;
                     if (resx.resourceQuantity.HasValue && resx.resourcePrice.HasValue)
                     {
                         num  = resx.resourceQuantity.Value;
                         num3 = num * resx.resourcePrice.Value;
                     }
                     if (predicate == null)
                     {
                         predicate = listx => listx.ResourceId == resx.resourceId;
                     }
                     foreach (BudModifyTaskRes res in first.Where <BudModifyTaskRes>(predicate).ToList <BudModifyTaskRes>())
                     {
                         if (res != null)
                         {
                             num  += res.ResourceQuantity;
                             num3 += res.ResourcePrice * res.ResourceQuantity;
                             first.Remove(res);
                         }
                     }
                     if (num != 0M)
                     {
                         unitPrice = num3 / num;
                     }
                     ConstructResource consRes = ConstructResource.Create(Guid.NewGuid().ToString(), consTask.Id, resx.resourceId, 0M, unitPrice);
                     consRes.Add(consRes);
                 }
             }
             using (List <string> .Enumerator enumerator3 = this.budModifyTaskResSer.GetModifyTasResIds(first).GetEnumerator())
             {
                 System.Func <BudModifyTaskRes, bool> func2 = null;
                 string resId;
                 while (enumerator3.MoveNext())
                 {
                     resId = enumerator3.Current;
                     decimal num4 = 0M;
                     decimal num5 = 0M;
                     decimal num6 = 0M;
                     if (func2 == null)
                     {
                         func2 = listx => listx.ResourceId == resId;
                     }
                     foreach (BudModifyTaskRes res2 in first.Where <BudModifyTaskRes>(func2).ToList <BudModifyTaskRes>())
                     {
                         if (res2 != null)
                         {
                             num4 += res2.ResourceQuantity;
                             num6 += res2.ResourcePrice * res2.ResourceQuantity;
                             first.Remove(res2);
                         }
                     }
                     if (num4 != 0M)
                     {
                         num5 = num6 / num4;
                     }
                     Resource.GetById(resId);
                     ConstructResource resource2 = ConstructResource.Create(Guid.NewGuid().ToString(), consTask.Id, resId, 0M, num5);
                     resource2.Add(resource2);
                 }
             }
         }
     }
 }