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; } }
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; } }
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; } }