Esempio n. 1
0
        public async Task <NewErrorModel> GetPrintPDF([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();

                    TasksState tasksState = context.TasksState.Where(t => t.TaskId == TaskId).FirstOrDefault();
                    if (tasksState.State != "已完成")
                    {
                        return(new NewErrorModel()
                        {
                            error = new Error(1, string.Format("流程{0}!", tasksState.State), "")
                            {
                            },
                        });
                    }
                    CarTable ct = context.CarTable.Where(u => u.TaskId == TaskId).FirstOrDefault();
                    if (printAndSendModel.IsPublic)
                    {
                        ct.CarId = context.Car.Where(c => c.Id.ToString() == ct.CarId).FirstOrDefault().CarNumber;
                    }
                    Dictionary <string, string> keyValuePairs = new Dictionary <string, string>();

                    if (printAndSendModel.IsPublic)
                    {
                        keyValuePairs.Add("驾驶人", ct.DrivingMan);
                        keyValuePairs.Add("车牌号", ct.CarId);
                        keyValuePairs.Add("同行人数", ct.PeerNumber);
                        keyValuePairs.Add("用车事由", ct.MainContent);
                        keyValuePairs.Add("计划行车路线", ct.PlantTravelWay);
                        keyValuePairs.Add("实际行车路线", ct.FactTravelWay);
                        keyValuePairs.Add("出发时间", ct.StartTime.ToString());
                        keyValuePairs.Add("归来时间", ct.EndTime.ToString());
                        keyValuePairs.Add("实际行驶公里数", ct.FactKilometre);
                        keyValuePairs.Add("总行驶公里数", ct.UseKilometres);
                    }
                    else
                    {
                        keyValuePairs.Add("驾驶人", ct.DrivingMan);
                        keyValuePairs.Add("同行人数", ct.PeerNumber);
                        keyValuePairs.Add("用车事由", ct.MainContent);
                        keyValuePairs.Add("计划行车路线", ct.PlantTravelWay);
                        keyValuePairs.Add("实际行车路线", ct.FactTravelWay);
                        keyValuePairs.Add("出发时间", ct.StartTime.ToString());
                        keyValuePairs.Add("归来时间", ct.EndTime.ToString());
                        keyValuePairs.Add("总行驶公里数", ct.UseKilometres);
                    }

                    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();


                    string path = pdfHelper.GeneratePDF(FlowName, TaskId, tasks.ApplyMan, tasks.Dept, tasks.ApplyTime,
                                                        null, null, "2", 300, 650, null, null, null, dtApproveView, keyValuePairs);
                    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()
                    {
                        data = result,
                        error = new Error(0, "打印盖章成功!", "")
                        {
                        },
                    });
                }
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }
        public NewErrorModel QuaryByTimeNew(string startTime, string endTime)
        {
            try
            {
                using (DDContext context = new DDContext())
                {
                    List <Car>        cars         = context.Car.ToList();
                    List <CarTable>   carTables    = context.CarTable.Where(c => c.IsPublicCar == true && !string.IsNullOrEmpty(c.CarId)).ToList();
                    List <TasksState> tasksStates  = context.TasksState.ToList();
                    List <CarTable>   carTablesPro = new List <CarTable>();
                    foreach (var item in carTables)
                    {
                        TasksState tasksState = tasksStates.Where(t => t.TaskId == item.TaskId).FirstOrDefault();
                        if (tasksState != null && tasksState.State == "已完成")
                        {
                            carTablesPro.Add(item);
                        }
                    }
                    foreach (var item in cars)
                    {
                        foreach (var ct in carTablesPro)
                        {
                            if (ct.CarId.ToString() == item.Id.ToString())
                            {
                                if (!((DateTime.Parse(endTime) < ct.StartTime) || (DateTime.Parse(startTime) > ct.EndTime)))
                                {
                                    item.IsOccupyCar = true;
                                    //占用
                                    if (item.carTables != null)
                                    {
                                        item.carTables.Add(ct);
                                    }
                                    else
                                    {
                                        item.carTables = new List <CarTable>()
                                        {
                                            ct
                                        };
                                    }
                                    //旧格式
                                    if (string.IsNullOrEmpty(item.TaskId))
                                    {
                                        item.TaskId = ct.TaskId;
                                    }
                                    else
                                    {
                                        item.TaskId = item.TaskId + "," + ct.TaskId;
                                    }

                                    if (string.IsNullOrEmpty(item.UseMan))
                                    {
                                        item.UseMan = ct.DrivingMan;
                                    }
                                    else
                                    {
                                        item.UseMan = item.UseMan + "," + ct.DrivingMan;
                                    }
                                    if (string.IsNullOrEmpty(item.UseTimes))
                                    {
                                        item.UseTimes = ct.StartTime + "---" + ct.EndTime;
                                    }
                                    else
                                    {
                                        item.UseTimes = item.UseTimes + "," + ct.StartTime + "---" + ct.EndTime;
                                    }
                                }
                            }
                        }
                    }

                    return(new NewErrorModel()
                    {
                        data = cars,
                        error = new Error(0, "查询成功!", "")
                        {
                        },
                    });
                    //List<Car> cars = context.Car.ToList();
                    //List<CarTable> carTables = context.CarTable.Where(c => c.IsPublicCar == true && !string.IsNullOrEmpty(c.CarId)).ToList();
                    //List<Tasks> tasks = FlowInfoServer.ReturnUnFinishedTaskId("13"); //过滤审批后的流程
                    //List<Car> carsQuery = new List<Car>();//条件过滤集合
                    //List<Car> carsDic = new List<Car>();
                    //foreach (var ct in carTables)
                    //{
                    //    if (tasks.Where(t => t.TaskId.ToString() == ct.TaskId).ToList().Count > 0)
                    //    {
                    //        if (!(DateTime.Parse(endTime) < ct.StartTime || ct.EndTime < DateTime.Parse(startTime)))
                    //        {
                    //            Car car = cars.Find(c => c.Id.ToString() == ct.CarId);
                    //            if (car != null)
                    //            {
                    //                car.IsOccupyCar = true;
                    //                car.OccupyCarId = ct.Id.ToString();
                    //                car.UseMan = ct.DrivingMan;
                    //                car.UseTimes = ct.StartTime + "---" + ct.EndTime;
                    //                carsQuery.Add(car);
                    //            }
                    //        }
                    //    }
                    //}

                    //foreach (var c in cars)
                    //{
                    //    if (carsQuery.Where(cq => cq.Id == c.Id).ToList().Count == 0)
                    //    {
                    //        c.OccupyCarId = "";
                    //        c.IsOccupyCar = false;
                    //        c.UseTimes = "";
                    //        //bool IsTrue = true;
                    //        //foreach (var item in carsQuery)
                    //        //{
                    //        //    if (item.Id == c.Id)
                    //        //    {
                    //        //        IsTrue = false;
                    //        //    }
                    //        //}
                    //        //if (IsTrue)
                    //        //{
                    //        //    carsQuery.Add(c);
                    //        //}
                    //    }
                    //}
                    //return new NewErrorModel()
                    //{
                    //    data = carsQuery.Distinct(),
                    //    error = new Error(0, "查询成功!", "") { },
                    //};
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }