public async Task <NewErrorModel> Modify(ProcessingProgressModel processingProgressModel)
        {
            try
            {
                using (DDContext context = new DDContext())
                {
                    DingTalkServersController dingTalkServersController = new DingTalkServersController();
                    foreach (var item in processingProgressModel.processingProgresses)
                    {
                        string eappUrl = string.Format("eapp://page/start/productionMonitoring/productionMonitoring?taskid={0}&companyId={1}", item.TaskId, item.CompanyId);
                        //判断当前修改权限
                        NewErrorModel errorModel = GetPower(processingProgressModel.applyManId, item.TaskId);
                        List <int>    vs         = (List <int>)errorModel.data;

                        if (vs.Contains(1) && vs.Contains(3)) //  0 生产加工进度发起人 1 生产加工进度分配人 2 没权限(设计人员) 3.实际记录人
                        {
                            context.Entry <ProcessingProgress>(item).State = System.Data.Entity.EntityState.Modified;
                            if (!string.IsNullOrEmpty(item.SpeedOfProgress)) //获取工作进度表状态
                            {
                                //推送制表人
                                await dingTalkServersController.SendProcessingProgress(item.TabulatorId, 2, processingProgressModel.applyMan, item.Bom
                                                                                       , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);

                                //推送设计人员
                                await dingTalkServersController.SendProcessingProgress(item.DesignerId, 2, processingProgressModel.applyMan, item.Bom
                                                                                       , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);
                            }
                            context.SaveChanges();
                            return(new NewErrorModel()
                            {
                                error = new Error(0, "修改成功!", "")
                                {
                                },
                            });
                        }

                        if (vs.Count == 1 && vs.Contains(1)) //  0 生产加工进度发起人 1 生产加工进度分配人 2 没权限(设计人员) 3.实际记录人
                        {
                            context.Entry <ProcessingProgress>(item).State = System.Data.Entity.EntityState.Modified;
                            if (!string.IsNullOrEmpty(item.SpeedOfProgress)) //获取工作进度表状态
                            {
                                //推送实际记录人
                                await dingTalkServersController.SendProcessingProgress(item.NoteTakerId, 3, processingProgressModel.applyMan, item.Bom
                                                                                       , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);
                            }
                        }
                        if (vs.Count == 1 && vs.Contains(0))  //制表人 暂时不通知(添加的时候通知了)
                        {
                            context.Entry <ProcessingProgress>(item).State = System.Data.Entity.EntityState.Modified;
                        }
                        if (vs.Count == 1 && vs.Contains(2)) //  0 生产加工进度发起人 1 生产加工进度分配人 2 没权限(设计人员) 3.实际记录人
                        {
                            if (item.IsAlreadyRead == true)
                            {
                                item.FinishTime = DateTime.Now.ToString("yyyy-MM-dd");
                            }
                            //修改已读状态
                            context.Entry <ProcessingProgress>(item).State = System.Data.Entity.EntityState.Modified;

                            //推送制表人
                            await dingTalkServersController.SendProcessingProgress(item.TabulatorId, 1, processingProgressModel.applyMan, item.Bom
                                                                                   , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);

                            //推送分配人
                            await dingTalkServersController.SendProcessingProgress(item.HeadOfDepartmentsId, 1, processingProgressModel.applyMan, item.Bom
                                                                                   , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);
                        }
                        if (/*vs.Count == 1 &&*/ vs.Contains(3)) //  0 生产加工进度发起人 1 生产加工进度分配人 2 没权限(设计人员) 3.实际记录人
                        {
                            context.Entry <ProcessingProgress>(item).State = System.Data.Entity.EntityState.Modified;
                            if (!string.IsNullOrEmpty(item.SpeedOfProgress)) //获取工作进度表状态
                            {
                                //推送制表人
                                await dingTalkServersController.SendProcessingProgress(item.TabulatorId, 0, processingProgressModel.applyMan, item.Bom
                                                                                       , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);

                                //推送设计人员
                                await dingTalkServersController.SendProcessingProgress(item.DesignerId, 0, processingProgressModel.applyMan, item.Bom
                                                                                       , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);

                                //推送分配人
                                await dingTalkServersController.SendProcessingProgress(item.HeadOfDepartmentsId, 0, processingProgressModel.applyMan, item.Bom
                                                                                       , item.TaskId, item.CompanyName, item.SpeedOfProgress, item.IsAlreadyRead, eappUrl);
                            }
                        }
                    }
                    context.SaveChanges();
                }
                return(new NewErrorModel()
                {
                    error = new Error(0, "修改成功!", "")
                    {
                    },
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <NewErrorModel> Save(ProcessingProgressModel processingProgressModel)
        {
            try
            {
                if (processingProgressModel.CompanyId == 0)  //研究院
                {
                    DDContext dDContext = new DDContext();
                    string    eappUrl   = string.Format("eapp://page/start/productionMonitoring/productionMonitoring?taskid={0}&companyId={1}", processingProgressModel.processingProgresses[0].TaskId, processingProgressModel.CompanyId);
                    if (dDContext.Roles.Where(r => r.RoleName == "生产加工进度发起人" && r.UserId == processingProgressModel.applyManId).ToList().Count == 0)
                    {
                        return(new NewErrorModel()
                        {
                            error = new Error(1, "没有权限上传!", "")
                            {
                            },
                        });
                    }

                    List <Models.DingModels.ProjectInfo> projectInfos = dDContext.ProjectInfo.ToList();

                    if (processingProgressModel.IsExcelUpload)
                    {
                        foreach (var processingProgresse in processingProgressModel.processingProgresses)
                        {
                            //校对数据
                            if (!string.IsNullOrEmpty(processingProgresse.TaskId))
                            {
                                processingProgresse.CompanyId = processingProgressModel.CompanyId.ToString();
                                List <ProcessingProgress> ProcessingProgressList = dDContext.ProcessingProgress.Where(p => p.TaskId == processingProgresse.TaskId && p.CompanyId == processingProgressModel.CompanyId.ToString()).ToList();
                                if (ProcessingProgressList.Count > 0)
                                {
                                    return(new NewErrorModel()
                                    {
                                        error = new Error(1, string.Format("保存失败,系统中已存在流水号 {0} 的数据", processingProgresse.TaskId), "")
                                        {
                                        },
                                    });
                                }
                                if (projectInfos.Where(p => p.ProjectId == processingProgresse.ProjectId &&
                                                       p.ProjectName == processingProgresse.ProjectName).ToList().Count == 0)
                                {
                                    return(new NewErrorModel()
                                    {
                                        error = new Error(1, string.Format("保存失败,项目Id {0} 、 项目名 {1} 与系统中的数据不吻合!", processingProgresse.ProjectId, processingProgresse.ProjectName), "")
                                        {
                                        },
                                    });
                                }
                                else
                                {
                                    if (projectInfos.Where(p => p.ProjectId == processingProgresse.ProjectId &&
                                                           p.ProjectName == p.ProjectName && p.ProjectType == processingProgresse.ProjectType &&
                                                           p.ProjectSmallType == processingProgresse.ProjectSmallType).ToList().Count == 0)
                                    {
                                        return(new NewErrorModel()
                                        {
                                            error = new Error(1, string.Format("保存失败,项目Id {0} 、 项目名 {1} 与系统中的大类、小类不吻合!", processingProgresse.ProjectId, processingProgresse.ProjectName), "")
                                            {
                                            },
                                        });
                                    }
                                    else
                                    {
                                        List <Models.DingModels.Tasks> tasksDesigner          = dDContext.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.Designer)).ToList();
                                        List <Models.DingModels.Tasks> tasksNoteTaker         = dDContext.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.NoteTaker)).ToList();
                                        List <Models.DingModels.Tasks> tasksHeadOfDepartments = dDContext.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.HeadOfDepartments)).ToList();
                                        List <Models.DingModels.Tasks> tasksTabulator         = dDContext.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.Tabulator)).ToList();
                                        if (tasksDesigner.Count == 0 || tasksNoteTaker.Count == 0 || tasksHeadOfDepartments.Count == 0 || tasksTabulator.Count == 0)
                                        {
                                            if (tasksTabulator.Count == 0)
                                            {
                                                return(new NewErrorModel()
                                                {
                                                    error = new Error(1, string.Format("保存失败,系统中找不到:制表人 {0} 的Id   !", processingProgresse.Tabulator), "")
                                                    {
                                                    },
                                                });
                                            }
                                            if (tasksDesigner.Count == 0)
                                            {
                                                return(new NewErrorModel()
                                                {
                                                    error = new Error(1, string.Format("保存失败,系统中找不到:设计员 {0} 的Id   !", processingProgresse.NoteTaker), "")
                                                    {
                                                    },
                                                });
                                            }
                                            if (tasksNoteTaker.Count == 0)
                                            {
                                                return(new NewErrorModel()
                                                {
                                                    error = new Error(1, string.Format("保存失败,系统中找不到:记录员 {0} 的Id   !", processingProgresse.Designer), "")
                                                    {
                                                    },
                                                });
                                            }
                                            if (tasksHeadOfDepartments.Count == 0)
                                            {
                                                return(new NewErrorModel()
                                                {
                                                    error = new Error(1, string.Format("保存失败,系统中找不到:部门负责人 {0} 的Id   !", processingProgresse.HeadOfDepartments), "")
                                                    {
                                                    },
                                                });
                                            }
                                        }
                                        else
                                        {
                                            processingProgresse.TabulatorId         = tasksTabulator[0].ApplyManId;
                                            processingProgresse.DesignerId          = tasksDesigner[0].ApplyManId;
                                            processingProgresse.NoteTakerId         = tasksNoteTaker[0].ApplyManId;
                                            processingProgresse.HeadOfDepartmentsId = tasksHeadOfDepartments[0].ApplyManId;
                                            processingProgresse.CreateTime          = DateTime.Now.ToString("yyyy-MM-dd");
                                            dDContext.ProcessingProgress.Add(processingProgresse);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (!processingProgressModel.IsExcelUpload)  //操作界面添加
                    {
                        List <ProcessingProgress> ProcessingProgressList = new List <ProcessingProgress>();

                        foreach (ProcessingProgress processingProgresse in processingProgressModel.processingProgresses)
                        {
                            List <ProcessingProgress> ProcessingProgressListNew = dDContext.ProcessingProgress.Where(p => p.TaskId == processingProgresse.TaskId && p.CompanyId == processingProgressModel.CompanyId.ToString()).ToList();
                            if (ProcessingProgressListNew.Count > 0)
                            {
                                return(new NewErrorModel()
                                {
                                    error = new Error(1, string.Format("保存失败,系统中已存在流水号 {0} 的数据", processingProgresse.TaskId), "")
                                    {
                                    },
                                });
                            }
                            processingProgresse.CompanyId = processingProgressModel.CompanyId.ToString();
                            Roles roles = dDContext.Roles.Where(r => r.RoleName == "生产加工进度分配人").FirstOrDefault();
                            //推送钉钉消息给设计人员和部门负责人(胡工)
                            DingTalkServersController dingTalkServersController = new DingTalkServersController();
                            await dingTalkServersController.SendProcessingProgress(processingProgresse.DesignerId, 0, processingProgressModel.applyMan, processingProgresse.Bom
                                                                                   , processingProgresse.TaskId, processingProgresse.CompanyName, processingProgresse.SpeedOfProgress, processingProgresse.IsAlreadyRead, eappUrl);

                            await dingTalkServersController.SendProcessingProgress(roles.UserId, 0, processingProgressModel.applyMan, processingProgresse.Bom
                                                                                   , processingProgresse.TaskId, processingProgresse.CompanyName, processingProgresse.SpeedOfProgress, processingProgresse.IsAlreadyRead, eappUrl);

                            processingProgresse.CreateTime = DateTime.Now.ToString("yyyy-MM-dd");
                            ProcessingProgressList.Add(processingProgresse);
                        }
                        dDContext.ProcessingProgress.AddRange(ProcessingProgressList);
                    }
                    dDContext.SaveChanges();
                    return(new NewErrorModel()
                    {
                        error = new Error(0, string.Format("保存成功!共计{0}条数据 ", processingProgressModel.processingProgresses.Count), "")
                        {
                        },
                    });
                }
                else  //华数
                {
                    DDContext   dDContext   = new DDContext();
                    DDContextHs dDContextHs = new DDContextHs();
                    string      eappUrl     = string.Format("eapp://page/start/productionMonitoring/productionMonitoring?taskid={0}&companyId={1}", processingProgressModel.processingProgresses[0].TaskId, processingProgressModel.CompanyId);
                    if (dDContext.Roles.Where(r => r.RoleName == "生产加工进度发起人" && r.UserId == processingProgressModel.applyManId).ToList().Count == 0)
                    {
                        return(new NewErrorModel()
                        {
                            error = new Error(1, "没有权限上传!", "")
                            {
                            },
                        });
                    }

                    List <Models.DingModelsHs.ProjectInfo> projectInfos = dDContextHs.ProjectInfo.ToList();
                    if (processingProgressModel.IsExcelUpload)  //操作界面添加
                    {
                        foreach (var processingProgresse in processingProgressModel.processingProgresses)
                        {
                            //校对数据
                            if (!string.IsNullOrEmpty(processingProgresse.TaskId))
                            {
                                processingProgresse.CompanyId = processingProgressModel.CompanyId.ToString();
                                List <ProcessingProgress> ProcessingProgressList = dDContext.ProcessingProgress.Where(p => p.TaskId == processingProgresse.TaskId).ToList();
                                if (ProcessingProgressList.Count > 0)
                                {
                                    return(new NewErrorModel()
                                    {
                                        error = new Error(1, string.Format("保存失败,系统中已存在流水号 {0} 的数据", processingProgresse.TaskId), "")
                                        {
                                        },
                                    });
                                }
                                if (projectInfos.Where(p => p.ProjectId == processingProgresse.ProjectId &&
                                                       p.ProjectName == processingProgresse.ProjectName).ToList().Count == 0)
                                {
                                    return(new NewErrorModel()
                                    {
                                        error = new Error(1, string.Format("保存失败,项目Id {0} 、 项目名 {1} 与系统中的数据不吻合!", processingProgresse.ProjectId, processingProgresse.ProjectName), "")
                                        {
                                        },
                                    });
                                }
                                else
                                {
                                    //华数不校对项目类别
                                    //  if (projectInfos.Where(p => p.ProjectId == processingProgresse.ProjectId &&
                                    //p.ProjectName == p.ProjectName && p.ProjectType == processingProgresse.ProjectType
                                    //&& p.ProjectSmallType == processingProgresse.ProjectSmallType).ToList().Count == 0)
                                    //  {
                                    //      return new NewErrorModel()
                                    //      {
                                    //          error = new Error(1, string.Format("保存失败,项目Id {0} 、 项目名 {1} 与系统中的大类、小类不吻合!", processingProgresse.ProjectId, processingProgresse.ProjectName), "") { },
                                    //      };
                                    //  }
                                    //  else
                                    //  {
                                    List <Models.DingModelsHs.Tasks> tasksDesigner          = dDContextHs.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.Designer)).ToList();
                                    List <Models.DingModelsHs.Tasks> tasksNoteTaker         = dDContextHs.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.NoteTaker)).ToList();
                                    List <Models.DingModelsHs.Tasks> tasksHeadOfDepartments = dDContextHs.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.HeadOfDepartments)).ToList();
                                    List <Models.DingModelsHs.Tasks> tasksTabulator         = dDContextHs.Tasks.Where(t => t.ApplyMan.Contains(processingProgresse.Tabulator)).ToList();
                                    if (tasksDesigner.Count == 0 || tasksNoteTaker.Count == 0 || tasksHeadOfDepartments.Count == 0 || tasksTabulator.Count == 0)
                                    {
                                        if (tasksTabulator.Count == 0)
                                        {
                                            return(new NewErrorModel()
                                            {
                                                error = new Error(1, string.Format("保存失败,系统中找不到:制表人 {0} 的Id   !", processingProgresse.Tabulator), "")
                                                {
                                                },
                                            });
                                        }
                                        if (tasksDesigner.Count == 0)
                                        {
                                            return(new NewErrorModel()
                                            {
                                                error = new Error(1, string.Format("保存失败,系统中找不到:设计员 {0} 的Id   !", processingProgresse.NoteTaker), "")
                                                {
                                                },
                                            });
                                        }
                                        if (tasksNoteTaker.Count == 0)
                                        {
                                            return(new NewErrorModel()
                                            {
                                                error = new Error(1, string.Format("保存失败,系统中找不到:记录员 {0} 的Id   !", processingProgresse.Designer), "")
                                                {
                                                },
                                            });
                                        }
                                        if (tasksHeadOfDepartments.Count == 0)
                                        {
                                            return(new NewErrorModel()
                                            {
                                                error = new Error(1, string.Format("保存失败,系统中找不到:部门负责人 {0} 的Id   !", processingProgresse.HeadOfDepartments), "")
                                                {
                                                },
                                            });
                                        }
                                    }
                                    else
                                    {
                                        processingProgresse.TabulatorId         = tasksTabulator[0].ApplyManId;
                                        processingProgresse.DesignerId          = tasksDesigner[0].ApplyManId;
                                        processingProgresse.NoteTakerId         = tasksNoteTaker[0].ApplyManId;
                                        processingProgresse.HeadOfDepartmentsId = tasksHeadOfDepartments[0].ApplyManId;
                                        processingProgresse.CreateTime          = DateTime.Now.ToString("yyyy-MM-dd");
                                        dDContext.ProcessingProgress.Add(processingProgresse);
                                    }
                                }
                            }
                        }
                    }
                    if (!processingProgressModel.IsExcelUpload)  //操作界面添加
                    {
                        List <ProcessingProgress> ProcessingProgressList = new List <ProcessingProgress>();
                        foreach (var processingProgresse in processingProgressModel.processingProgresses)
                        {
                            List <ProcessingProgress> ProcessingProgressListNew = dDContext.ProcessingProgress.Where(p => p.TaskId == processingProgresse.TaskId && p.CompanyId == processingProgressModel.CompanyId.ToString()).ToList();
                            if (ProcessingProgressListNew.Count > 0)
                            {
                                return(new NewErrorModel()
                                {
                                    error = new Error(1, string.Format("保存失败,系统中已存在流水号 {0} 的数据", processingProgresse.TaskId), "")
                                    {
                                    },
                                });
                            }
                            processingProgresse.CompanyId = processingProgressModel.CompanyId.ToString();
                            Roles roles = dDContext.Roles.Where(r => r.RoleName == "生产加工进度分配人").FirstOrDefault();
                            //推送钉钉消息给设计人员和部门负责人(胡工)
                            DingTalkServersController dingTalkServersController = new DingTalkServersController();
                            await dingTalkServersController.SendProcessingProgress(processingProgresse.DesignerId, 0, processingProgressModel.applyMan, processingProgresse.Bom
                                                                                   , processingProgresse.TaskId, processingProgresse.CompanyName, processingProgresse.SpeedOfProgress, processingProgresse.IsAlreadyRead, eappUrl);

                            await dingTalkServersController.SendProcessingProgress(roles.UserId, 0, processingProgressModel.applyMan, processingProgresse.Bom
                                                                                   , processingProgresse.TaskId, processingProgresse.CompanyName, processingProgresse.SpeedOfProgress, processingProgresse.IsAlreadyRead, eappUrl);

                            processingProgresse.CreateTime = DateTime.Now.ToString("yyyy-MM-dd");
                            ProcessingProgressList.Add(processingProgresse);
                        }
                        dDContext.ProcessingProgress.AddRange(ProcessingProgressList);
                    }
                    dDContext.SaveChanges();
                    return(new NewErrorModel()
                    {
                        error = new Error(0, string.Format("保存成功!共计{0}条数据 ", processingProgressModel.processingProgresses.Count), "")
                        {
                        },
                    });
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }