Пример #1
0
        public object Read(string taskId)
        {
            try
            {
                ProjectClosureModel        projectClosureModel  = new ProjectClosureModel();
                DDContext                  dDContext            = new DDContext();
                ProjectClosure             projectClosure       = dDContext.ProjectClosure.Where(p => p.TaskId == taskId).FirstOrDefault();
                List <DetailedList>        detailedLists        = dDContext.DetailedList.Where(d => d.TaskId == taskId).ToList();
                List <ApplicationUnit>     applicationUnitList  = dDContext.ApplicationUnit.Where(d => d.TaskId == taskId).ToList();
                List <ProjectFunding>      projectFundingList   = dDContext.ProjectFunding.Where(d => d.TaskId == taskId).ToList();
                List <LongitudinalProject> longitudinalProjects = dDContext.LongitudinalProject.Where(d => d.TaskId == taskId).ToList();

                projectClosureModel.projectClosure      = projectClosure;
                projectClosureModel.detailedLists       = detailedLists;
                projectClosureModel.applicationUnitList = applicationUnitList;
                projectClosureModel.projectFundingList  = projectFundingList;
                projectClosureModel.longitudinalProject = longitudinalProjects;

                return(new NewErrorModel()
                {
                    data = projectClosureModel,
                    error = new Error(0, "读取成功!", "")
                    {
                    },
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #2
0
        public async Task <NewErrorModel> PrintAndSend([FromBody] PrintAndSendModel printAndSendModel)
        {
            try
            {
                string    TaskId    = printAndSendModel.TaskId;
                string    UserId    = printAndSendModel.UserId;
                PDFHelper pdfHelper = new PDFHelper();
                using (DDContext context = new DDContext())
                {
                    //获取表单信息
                    Tasks  tasks     = context.Tasks.Where(t => t.TaskId.ToString() == TaskId && t.NodeId == 0).First();
                    string FlowId    = tasks.FlowId.ToString();
                    string ProjectId = tasks.ProjectId;
                    //判断流程是否已结束

                    List <Tasks> tasksList = context.Tasks.Where(t => t.TaskId.ToString() == TaskId && t.State == 0 && t.IsSend == false).ToList();
                    if (tasksList.Count > 0)
                    {
                        return(new NewErrorModel()
                        {
                            error = new Error(1, "流程未结束!", "")
                            {
                            },
                        });
                    }

                    ProjectClosure purchaseTableList = context.ProjectClosure.Where(u => u.TaskId == TaskId).FirstOrDefault();
                    Dictionary <string, string> keyValuePairsHead = new Dictionary <string, string>();
                    keyValuePairsHead.Add("项目类别", purchaseTableList.ProjectType);
                    keyValuePairsHead.Add("项目负责人", purchaseTableList.ResponsibleMan);
                    keyValuePairsHead.Add("小组成员", purchaseTableList.TeamMembers);
                    keyValuePairsHead.Add("项目周期", purchaseTableList.StartTime + "-" + purchaseTableList.EndTime);
                    keyValuePairsHead.Add("项目实际开发周期", purchaseTableList.ActualCycleStart + "-" + purchaseTableList.ActualCycleEnd);
                    keyValuePairsHead.Add("是否有横向合作单位", purchaseTableList.IsTransverse == true ? "是" : "否");
                    if (purchaseTableList.IsTransverse == true)
                    {
                        keyValuePairsHead.Add("合同金额", purchaseTableList.ContractAmount);
                        keyValuePairsHead.Add("合同编码", purchaseTableList.ContractNo);
                        keyValuePairsHead.Add("实际到账", purchaseTableList.ActualMoney);
                    }
                    keyValuePairsHead.Add("是否有申报纵向项目", purchaseTableList.IsPortrait == true ? "是" : "否");

                    List <PrintPDFModel> printPDFModels = new List <PrintPDFModel>();
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "立项书或建议书",
                        Count = CalCounts(purchaseTableList.SuggestBook1).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "评审PPT",
                        Count = CalCounts(purchaseTableList.PPT2).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "需求规格说明书、产品总体设计书",
                        Count = CalCounts(purchaseTableList.DemandBook3).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "机械设计图纸",
                        Count = CalCounts(purchaseTableList.Drawing4).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "电气图纸",
                        Count = CalCounts(purchaseTableList.Electrical5).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "BOM表",
                        Count = CalCounts(purchaseTableList.Bom6).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "软件源代码",
                        Count = CalCounts(purchaseTableList.SourceCode7).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "使用说明书/操作手册/技术方案/规格说明书",
                        Count = CalCounts(purchaseTableList.UseBook8).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "合作协议",
                        Count = CalCounts(purchaseTableList.CooperationAgreement9).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "产品(样机/成品)图片/影像",
                        Count = CalCounts(purchaseTableList.Product10).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "阶段性整理的问题的分析、解决方案及计划表",
                        Count = CalCounts(purchaseTableList.Solution11).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "项目采购清单、借用清单、领料清单、入库清单、借用清单、维修清单",
                        Count = context.DetailedList.Where(t => t.TaskId == TaskId && t.Type.Contains("零部件采购")).ToList().Count.ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "受理知识产权清单",
                        Count = context.DetailedList.Where(t => t.TaskId == TaskId && t.Type.Contains("知识产权")).ToList().Count.ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "纵向项目申请/中期检查/验收资料",
                        Count = CalCounts(purchaseTableList.AcceptanceData14).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "其他过程文档、设计报告、评审报告、项目计划、设计更改报告等",
                        Count = CalCounts(purchaseTableList.ProcessDocumentation15).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "项目终止情况报告",
                        Count = CalCounts(purchaseTableList.TerminationReport16).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "装箱单",
                        Count = CalCounts(purchaseTableList.PackingList17).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "客户验收单",
                        Count = CalCounts(purchaseTableList.AcceptanceSlip18).ToString()
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "转化/应用单位情况表",
                        Count = "1"
                    });
                    printPDFModels.Add(new PrintPDFModel()
                    {
                        Name  = "项目经费使用情况表",
                        Count = "1"
                    });

                    DataTable dtSourse = DtLinqOperators.CopyToDataTable(printPDFModels);
                    //ClassChangeHelper.ToDataTable(SelectPurchaseList);
                    List <NodeInfo> NodeInfoList = context.NodeInfo.Where(u => u.FlowId == FlowId && u.NodeId != 0 && u.IsSend != true && u.NodeName != "结束").ToList();
                    foreach (NodeInfo nodeInfo in NodeInfoList)
                    {
                        if (string.IsNullOrEmpty(nodeInfo.NodePeople))
                        {
                            string strNodePeople = context.Tasks.Where(q => q.TaskId.ToString() == TaskId && q.NodeId == nodeInfo.NodeId).First().ApplyMan;
                            string ApplyTime     = context.Tasks.Where(q => q.TaskId.ToString() == TaskId && q.NodeId == nodeInfo.NodeId).First().ApplyTime;
                            nodeInfo.NodePeople = strNodePeople + "  " + ApplyTime;
                        }
                        else
                        {
                            string ApplyTime = context.Tasks.Where(q => q.TaskId.ToString() == TaskId && q.NodeId == nodeInfo.NodeId).First().ApplyTime;
                            nodeInfo.NodePeople = nodeInfo.NodePeople + "  " + ApplyTime;
                        }
                    }
                    DataTable   dtApproveView = ClassChangeHelper.ToDataTable(NodeInfoList);
                    string      FlowName      = context.Flows.Where(f => f.FlowId.ToString() == FlowId).First().FlowName.ToString();
                    ProjectInfo projectInfo   = context.ProjectInfo.Where(p => p.ProjectId == ProjectId).First();
                    string      ProjectName   = projectInfo.ProjectName;
                    string      ProjectNo     = projectInfo.ProjectId;

                    //绘制BOM表单PDF
                    List <string> contentList = new List <string>()
                    {
                        "序号", "文件类别", "份数"
                    };

                    float[] contentWithList = new float[]
                    {
                        50, 350, 60,
                    };

                    string path = pdfHelper.GeneratePDF(FlowName, TaskId, tasks.ApplyMan, tasks.Dept, tasks.ApplyTime,
                                                        ProjectName, ProjectNo, "2", 300, 650, contentList, contentWithList, dtSourse, dtApproveView, null, keyValuePairsHead);
                    string RelativePath = "~/UploadFile/PDF/" + Path.GetFileName(path);

                    List <string> newPaths = new List <string>();
                    RelativePath = AppDomain.CurrentDomain.BaseDirectory + RelativePath.Substring(2, RelativePath.Length - 2).Replace('/', '\\');
                    newPaths.Add(RelativePath);
                    string SavePath = string.Format(@"{0}\UploadFile\Ionic\{1}.zip", AppDomain.CurrentDomain.BaseDirectory, FlowName + DateTime.Now.ToString("yyyyMMddHHmmss"));
                    //文件压缩打包
                    IonicHelper.CompressMulti(newPaths, SavePath, false);

                    //上传盯盘获取MediaId
                    SavePath = string.Format(@"~\UploadFile\Ionic\{0}", Path.GetFileName(SavePath));
                    DingTalkServersController dingTalkServersController = new DingTalkServersController();
                    var resultUploadMedia = await dingTalkServersController.UploadMedia(SavePath);

                    //推送用户
                    FileSendModel fileSendModel = JsonConvert.DeserializeObject <FileSendModel>(resultUploadMedia);
                    fileSendModel.UserId = UserId;
                    var result = await dingTalkServersController.SendFileMessage(fileSendModel);

                    return(new NewErrorModel()
                    {
                        error = new Error(0, result, "")
                        {
                        },
                    });
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #3
0
        public async Task <NewErrorModel> Modify([FromBody] ProjectClosureModel projectClosureModel)
        {
            try
            {
                if (string.IsNullOrEmpty(projectClosureModel.NodeId))
                {
                    return(new NewErrorModel()
                    {
                        data = projectClosureModel,
                        error = new Error(1, "NodeId 没传!", "")
                        {
                        },
                    });
                }
                DDContext      dDContext      = new DDContext();
                Flows          flows          = dDContext.Flows.Where(f => f.FlowName.Contains("结题")).FirstOrDefault();
                ProjectClosure projectClosure = projectClosureModel.projectClosure;
                dDContext.Entry <ProjectClosure>(projectClosure).State = System.Data.Entity.EntityState.Modified;
                projectClosureModel.detailedLists.ToList().ForEach(d =>
                {
                    dDContext.Entry(d).State = System.Data.Entity.EntityState.Modified;
                });
                projectClosureModel.applicationUnitList.ToList().ForEach(d =>
                {
                    dDContext.Entry(d).State = System.Data.Entity.EntityState.Modified;
                });

                dDContext.ProjectFunding.AddRange(projectClosureModel.projectFundingList);

                projectClosureModel.longitudinalProject.ToList().ForEach(d =>
                {
                    dDContext.Entry(d).State = System.Data.Entity.EntityState.Modified;
                });
                List <NodeInfo> nodeInfos = dDContext.NodeInfo.Where(n => n.NodeName.Contains("财务负责人") && n.FlowId.ToString() == flows.FlowId.ToString() &&
                                                                     n.NodeId.ToString() == projectClosureModel.NodeId).ToList();
                if (nodeInfos.Count > 0)
                {
                    dDContext.ProjectFunding.AddRange(projectClosureModel.projectFundingList);
                }

                NodeInfo nodeInfo = dDContext.NodeInfo.Where(n => n.NodeName == "结束" && n.FlowId.ToString() == flows.FlowId.ToString()
                                                             ).FirstOrDefault();


                //最后一步保存路径
                if (nodeInfo.NodeId == Int32.Parse(projectClosureModel.NodeId) + 1)
                {
                    Tasks       tasks       = dDContext.Tasks.Where(t => t.TaskId.ToString() == projectClosureModel.projectClosure.TaskId.ToString() && t.NodeId.ToString() == "0").FirstOrDefault();
                    ProjectInfo projectInfo = dDContext.ProjectInfo.Where(p => p.ProjectId == tasks.ProjectId.ToString()).FirstOrDefault();
                    projectInfo.ProjectState = "已完成";
                    dDContext.Entry <ProjectInfo>(projectInfo).State = System.Data.Entity.EntityState.Modified;
                    SavePath(projectInfo.FilePath + "1立项书或建议书", projectClosureModel.projectClosure.SuggestBook1);
                    SavePath(projectInfo.FilePath + "2评审PPT", projectClosureModel.projectClosure.PPT2);
                    SavePath(projectInfo.FilePath + "3需求规格说明书、产品总体设计书", projectClosureModel.projectClosure.DemandBook3);
                    SavePath(projectInfo.FilePath + "4机械设计图纸", projectClosureModel.projectClosure.Drawing4);
                    SavePath(projectInfo.FilePath + "5电气图纸", projectClosureModel.projectClosure.Electrical5);
                    SavePath(projectInfo.FilePath + "6BOM表", projectClosureModel.projectClosure.Bom6);
                    SavePath(projectInfo.FilePath + "7软件源代码", projectClosureModel.projectClosure.SourceCode7);
                    SavePath(projectInfo.FilePath + "8使用说明书、操作手册、技术方案、规格说明书", projectClosureModel.projectClosure.UseBook8);
                    SavePath(projectInfo.FilePath + "9合作协议", projectClosureModel.projectClosure.CooperationAgreement9);
                    SavePath(projectInfo.FilePath + "10产品(样机、成品)图片、影像", projectClosureModel.projectClosure.Product10);
                    SavePath(projectInfo.FilePath + "11阶段性整理的问题的分析、解决方案及计划表", projectClosureModel.projectClosure.Solution11);
                    //SavePath(projectInfo.FilePath + "12项目采购清单、借用清单、领料清单、入库清单", projectClosureModel.projectClosure);
                    //SavePath(projectInfo.FilePath + "13受理知识产权清单及申请资料", projectClosureModel.projectClosure);
                    SavePath(projectInfo.FilePath + "14纵向项目申请、中期检查、验收资料", projectClosureModel.projectClosure.AcceptanceData14);
                    SavePath(projectInfo.FilePath + "15其他过程文档", projectClosureModel.projectClosure.ProcessDocumentation15);
                    SavePath(projectInfo.FilePath + "16项目终止情况报告", projectClosureModel.projectClosure.TerminationReport16);
                    SavePath(projectInfo.FilePath + "17装箱单", projectClosureModel.projectClosure.PackingList17);
                    SavePath(projectInfo.FilePath + "18客户验收单", projectClosureModel.projectClosure.AcceptanceSlip18);
                    //SavePath(projectInfo.FilePath + "19转化、应用单位情况表", projectClosureModel.projectClosure.);
                    //SavePath(projectInfo.FilePath + "20项目经费使用情况表", projectClosureModel.projectClosure);

                    foreach (var item in projectClosureModel.detailedLists)
                    {
                        if (item.Type.Contains("零部件采购"))
                        {
                            Tasks taskP = dDContext.Tasks.Where(t => t.TaskId.ToString() == item.OldTaskId && t.NodeId == 0).FirstOrDefault();
                            PrintAndSendPurcahse(taskP, System.Web.HttpContext.Current.Server.MapPath
                                                     (projectInfo.FilePath + string.Format("12项目采购清单、借用清单、领料清单、入库清单//零部件采购单流水号{0}.zip", item.OldTaskId)));
                        }
                    }

                    List <LongitudinalProject> longitudinalProject = dDContext.LongitudinalProject.Where(p => p.TaskId == projectClosureModel.projectClosure.TaskId).ToList();

                    await PrintsLongitudinalProject(longitudinalProject, "", "纵向项目基本情况表模板",
                                                    "纵向项目基本情况表", 1, 2, System.Web.HttpContext.Current.Server.MapPath
                                                        (projectInfo.FilePath + "14纵向项目申请、中期检查、验收资料//纵向项目基本情况表.xlsx"));

                    List <ApplicationUnit> applicationUnitList = dDContext.ApplicationUnit.Where(p => p.TaskId == projectClosureModel.projectClosure.TaskId).ToList();
                    await PrintsApplicationUnit(applicationUnitList, "", "转化应用单位情况表模板",
                                                "转化应用单位情况表", 1, 2, System.Web.HttpContext.Current.Server.MapPath
                                                    (projectInfo.FilePath + "19转化、应用单位情况表//转化应用单位情况表.xlsx"));

                    List <ProjectFunding> projectFundingList = dDContext.ProjectFunding.Where(p => p.TaskId == projectClosureModel.projectClosure.TaskId).ToList();
                    await PrintsProjectFunding(projectFundingList, "", "项目经费使用情况表模板",
                                               "项目经费使用情况表", 0, 3, System.Web.HttpContext.Current.Server.MapPath
                                                   (projectInfo.FilePath + "20项目经费使用情况表//项目经费使用情况表.xlsx"));
                }

                dDContext.SaveChanges();
                return(new NewErrorModel()
                {
                    data = projectClosureModel,
                    error = new Error(0, "修改成功!", "")
                    {
                    },
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }