using Ewide.Nbzs.Entity; using Ewide.Nbzs.Entity.Extends; using Ewide.NbzsZheliban.Tools; using Furion; using Furion.DataEncryption; using Furion.FriendlyException; using Furion.JsonSerialization; using Furion.UnifyResult; using ImageMagick; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; using Newtonsoft.Json.Linq; using SqlSugar; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Furion.RemoteRequest.Extensions; using Microsoft.AspNetCore.Hosting; using Ewide.Core; namespace Ewide.NbzsZheliban.Service { [ApiDescriptionSettings(Name = "数据接口")] public class DataService : Furion.DynamicApiController.IDynamicApiController///: BaseService { private readonly ISqlSugarRepository repository; private readonly SqlSugarClient db; private readonly IJsonSerializerProvider _jsonSerializer; private readonly ICache _cache; public DataService(ISqlSugarRepository sqlSugarRepository, IJsonSerializerProvider jsonSerializer, IHostingEnvironment hostingEnvironment) { repository = sqlSugarRepository; db = repository.Context; _jsonSerializer = jsonSerializer; this._hostingEnvironment = hostingEnvironment; _cache = new RedisCache(Microsoft.Extensions.Options.Options.Create(new CacheOptions { CacheType = CacheType.RedisCache, RedisConnectionString = App.GetConfig("RedisConfig") })); } /// /// 获取当前用户信息 /// /// [HttpPost("/userinfo")] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public dynamic GetUserInfo([FromBody] JObject args) { var ticket = args.GetJsonValue("ticket", isThrowExp: true); var userinfoObj = GetInfoByTicket(ticket); return new Nbzs.Entity.Extends.ZhelibanUserInfo { CardId = userinfoObj["idnum"].ToString(), Name = userinfoObj["username"].ToString() }; } /// /// 被征收人关联的项目列表 /// /// /// [HttpPost("/project/list")] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public async Task PrjList([FromBody] JObject args) { var ticket = args.GetJsonValue("ticket", isThrowExp: true); //var ticket = Request.Query["ticket"]; var userinfoObj = GetInfoByTicket(ticket); var cardno = userinfoObj["idnum"].ToString(); var username = userinfoObj["username"].ToString(); //修改测试数据 //db.Ado.ExecuteCommand("update InvestigateTable set ExpropriatedCardNo='" + cardno + "' where id ='A80C1599-B658-4176-8CCF-DDA57A64254F' "); return await GetInfoByCardNoAsync(cardno, username); } /// /// 被征收人关联的项目列表 /// /// /// [HttpPost("/project/list2")] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public async Task PrjList2([FromBody] JObject args) { var cardno = "341203199206303411"; var username = "张三丰"; return await GetInfoByCardNoAsync(cardno, username); } /// /// 住宅调查表 /// /// /// private async Task> GetzzDcbsAsync(string _cardno) { var cardno = MD5Encryption.Encrypt(_cardno); var list = _cache.Get>("CacheData-InvestigateTable"); if (list != null && list.Count > 0) return list.Where(p => p.ExpropriatedCardNo == cardno).ToList(); else //住宅调查表 return await db.Ado.SqlQueryAsync("select ID dcbId,ProjectId PrjId from InvestigateTable b where b.ExpropriatedCardNo=@ExpropriatedCardNo", new List { new SugarParameter("ExpropriatedCardNo", cardno, System.Data.DbType.String) }.ToArray()); } /// /// 非住宅调查表 /// /// /// private async Task> GetfzzDcbsAsync(string _cardno) { var cardno = MD5Encryption.Encrypt(_cardno); var list = _cache.Get>("CacheData-NonResidentialInvestigateTable"); if (list != null && list.Count > 0) return list.Where(p => p.ExpropriatedCardNo == cardno).ToList(); else //非住宅调查表 return await db.Ado.SqlQueryAsync("select ID dcbId,ProjectId PrjId from NonResidentialInvestigateTable b where b.PropertyRightPrsonCardNo=@ExpropriatedCardNo", new List { new SugarParameter("ExpropriatedCardNo", cardno, System.Data.DbType.String) }.ToArray()); } /// /// 项目列表 /// /// /// private async Task> GetPrjListAsync(IEnumerable list_dcbs) { var list = _cache.Get>("CacheData-Projects"); if (list != null && list.Count > 0) return list.Where(p => p.status == 2 && list_dcbs.Select(p => p.PrjId).Contains(p.PrjId)).ToList(); else //项目列表 return await db.Ado.SqlQueryAsync("select a.ID Prjid,a.area,a.AreaID,a.HouseAcquisitionDepartment as zsbm,a.CollectDecisionNo1 as year,(isnull(a.CollectDecisionNoHeadName,'')+'['+cast(a.CollectDecisionNo1 as varchar)+']'+ isnull(cast(a.CollectDecisionNo2 as varchar),'')+'号') zsjdh,dbo.get_current_state(a.ID) CurrentState,NAME,CreateRecordTime from Projects a where status = 2 and ID in ('" + string.Join("','", list_dcbs.Select(p => p.PrjId)) + "') "); } /// /// 分户评估 /// /// /// private async Task> GetFHPGListAsync(IEnumerable list_dcbs) { var list = _cache.Get>("CacheData-InvestigateTable_Assessment"); if (list != null && list.Count > 0) return list.Where(p => list_dcbs.Select(p => p.dcbId).Contains(p.dcbId)).ToList(); else { var InvestigateTableID_param = "'" + string.Join("','", list_dcbs.Select(p => p.dcbId)) + "'"; //分户评估 return await db.Ado.SqlQueryAsync("select d.id,e.ProjectId as PrjId ,d.AssessmentNo,e.HouseAddress,d.countValue,e.id dcbId,d.CreateTime,d.CreateUserName,1 type,p.EvaluationCompany from InvestigateTable_Assessment d inner join InvestigateTable e on d.InvestigateTableId=e.ID inner join Projects p on e.ProjectId=p.id where d.IsPublic=1 and d.InvestigateTableID in ( " + InvestigateTableID_param + " ) union all select d.id,e.ProjectId as PrjId ,AssessmentNo, e.HouseAddress, d.countValue,e.id dcbId,d.CreateTime,d.CreateUserName,2 type,p.EvaluationCompany from NonInvestigateTable_Assessment d inner join NonResidentialInvestigateTable e on d.NonInvestigateTableID = e.ID inner join Projects p on e.ProjectId=p.id where d.IsPublic=1 and d.NonInvestigateTableID in ( " + InvestigateTableID_param + " ) ;"); } } /// /// 补偿协议 /// /// /// private async Task> GetBCXYListAsync(IEnumerable list_dcbs) { var list = _cache.Get>("CacheData-ResidentialAgreement"); if (list != null && list.Count > 0) return list.Where(p => list_dcbs.Select(p => p.dcbId).Contains(p.dcbId)).ToList(); else { var InvestigateTableID_param = "'" + string.Join("','", list_dcbs.Select(p => p.dcbId)) + "'"; //补偿协议 return await db.Ado.SqlQueryAsync("select d.id,isnull(d.CollectDecisionNoHeadName,'')+isnull(d.No1,'')+'-'+isnull(d.No2,'')+(case when (d.No3 is null or d.No3 = '') then '' else ('-'+d.No3) end ) XyNo,d.SwitchProductionWay,e.HouseAddress,d.SummationShouldCompensateMoney,e.ProjectId as PrjId,e.id dcbId,d.SignTime,1 type,TotalAllocationArea from ResidentialAgreement d inner join InvestigateTable e on d.InvestigateTableId=e.ID where d.IsInRecords = 1 and d.InvestigateTableID in ( " + InvestigateTableID_param + " ) union all select d.id,isnull(d.CollectDecisionNoHeadName, '') + isnull(d.No2, '') + '-' + isnull(d.No3, '') XyNo , d.SwitchProductionWay, e.HouseAddress, d.SummationShouldCompensateMoney, e.ProjectId as PrjId,e.id dcbId,d.SignTime,2 type,TotalAllocationArea from NonResidentialAgreement d inner join NonResidentialInvestigateTable e on d.NonInvestigateTableID = e.ID where d.IsInRecords = 1 and d.NonInvestigateTableID in ( " + InvestigateTableID_param + " ); "); } } /// /// /// /// /// /// private async Task GetInfoByCardNoAsync(string cardno, string username) { var cachedata = _cache.Get("IndexData-" + cardno); if (!string.IsNullOrWhiteSpace(cachedata)) return JSON.Deserialize(cachedata); //var cardno_aes = AESEncryption.Decrypt(cardno, Common.GetHashKey()); var list_zz_dcb = await GetzzDcbsAsync(cardno); var list_fzz_dcb = await GetfzzDcbsAsync(cardno); //调查表集合 var list_dcbs = list_zz_dcb.Concat(list_fzz_dcb); var list_projects = await GetPrjListAsync(list_dcbs); var list_fhpgs = await GetFHPGListAsync(list_dcbs); var list_bcxys = await GetBCXYListAsync(list_dcbs); ////解密 //list_bcxys.ForEach(xy=> { //xy.ExpropriatedCardNo= AESEncryption.Decrypt(xy.ExpropriatedCardNo, Common.GetHashKey()); //}); var listAreas = new List { Guid.Parse("B2A0291C-84C7-4D86-A6D5-CB9FCCF4A2D8") }; list_projects.ForEach(p => { p.FhpgList = list_fhpgs.Where(a => a.PrjId == p.PrjId).ToList(); var bcxy = list_bcxys.Where(a => a.PrjId == p.PrjId).ToList(); bcxy.ForEach(a => a.countValue = list_fhpgs.Where(b => b.dcbId == a.dcbId).FirstOrDefault()?.countValue); p.BcxyList = bcxy; listAreas.Add(Guid.Parse(p.AreaID)); }); List list_PoliciesRegulations = null; var listPoliciesRegulationsTemp = _cache.Get>("CacheData-PoliciesRegulations"); if (listPoliciesRegulationsTemp != null && listPoliciesRegulationsTemp.Count > 0) { list_PoliciesRegulations = listPoliciesRegulationsTemp.Where(a => listAreas.Contains(a.AreaID) && a.IsPublic && (a.PublicTimeEnd == null || a.PublicTimeEnd.Value > DateTime.Now)).Select(b => new PoliciesRegulation { ID = b.ID, Contents = b.Contents, PublicTime = b.PublicTime.ToString(), Title = b.Title, Area = b.Area }).ToList(); } else { //政策 list_PoliciesRegulations = db.Queryable().Where(a => listAreas.Contains(a.AreaID) && a.IsPublic && (a.PublicTimeEnd == null || a.PublicTimeEnd.Value > DateTime.Now)).Select(b => new PoliciesRegulation { ID = b.ID, Contents = b.Contents, PublicTime = b.PublicTime.ToString(), Title = b.Title, Area = b.Area }).ToList(); } list_PoliciesRegulations.ForEach(a => { a.PublicTime = Convert.ToDateTime(a.PublicTime).ToString("yyyy-MM-dd"); }); //移除没有协议也没有分户评估的项目 (空项目) list_projects.FindAll(a => (a.BcxyList == null || a.BcxyList.Count == 0) && (a.FhpgList == null || a.FhpgList.Count == 0)).ForEach(a => { list_projects.Remove(a); }); Nbzs.Entity.Extends.H5IndexModel h5IndexModel = new() { PrjList = list_projects, IdCard = cardno, UserName = "*" + username.Substring(1, username.Length - 1), PoliciesRegulationsLists = new Nbzs.Entity.Extends.PoliciesRegulations { List = list_PoliciesRegulations, TotalCount = list_PoliciesRegulations.Count } }; _cache.Set("IndexData-" + cardno, h5IndexModel, new TimeSpan(0, 1, 30)); return h5IndexModel; } private JObject GetInfoByTicket(string ticket) { if (string.IsNullOrWhiteSpace(ticket)) throw Oops.Oh("无效访问"); var dbTicket = db.Queryable().Where(p => p.Ticket == ticket && p.ExpireTime > DateTime.Now).OrderBy(p => p.CreateTime, OrderByType.Desc).First(); if (dbTicket != null) { var OriginalResponse = DESCEncryption.Decrypt(dbTicket.OriginalResponse, Common.GetZlbSecretKey()); return JObject.Parse(OriginalResponse); } else { var time = DateTime.Now.ToString("yyyyMMddHHmmss"); var servicecode = App.Configuration["zlb_setting:servicecode"]; var servicepwd = App.Configuration["zlb_setting:servicepwd"]; var sign = MD5Encryption.Encrypt(servicecode + servicepwd + time); var datatype = "json"; var url = App.Configuration["zlb_setting:ticket_url"] .Replace("{servicecode}", servicecode) .Replace("{time}", time) .Replace("{sign}", sign) .Replace("{ticket}", ticket) .Replace("{datatype}", datatype) ; var tickerRsltStr = Ewide.NbzsZheliban.Tools.HttpHelper.CallUrl(url, ""); JObject ticketObj = null; try { ticketObj = JObject.Parse(tickerRsltStr); } catch (Newtonsoft.Json.JsonReaderException) { throw Oops.Oh($"ticket接口返回值有误,[{tickerRsltStr}]"); } if (ticketObj["result"].Value() != 0) throw Oops.Oh(ticketObj["result"].Value(), $"ticket接口返回值有误,[{tickerRsltStr}]"); time = DateTime.Now.ToString("yyyyMMddHHmmss"); sign = MD5Encryption.Encrypt(servicecode + servicepwd + time); url = App.Configuration["zlb_setting:token_url"] .Replace("{servicecode}", servicecode) .Replace("{time}", time) .Replace("{sign}", sign) .Replace("{token}", ticketObj["token"].ToString()) .Replace("{datatype}", datatype) ; var userinfoRsltStr = Ewide.NbzsZheliban.Tools.HttpHelper.CallUrl(url, ""); JObject userinfoObj = null; try { userinfoObj = JObject.Parse(userinfoRsltStr); } catch (Newtonsoft.Json.JsonReaderException) { throw Oops.Oh($"token接口返回值有误,[{tickerRsltStr}]"); } if (userinfoObj["result"].Value() != 0) throw Oops.Oh(userinfoObj["result"].Value(), $"ticket接口返回值有误,[{tickerRsltStr}]"); var temp1 = db.Insertable(new zjzwfwTickets { ID = Guid.NewGuid().ToString(), Ticket = ticket, IdCardNo = MD5Encryption.Encrypt(userinfoObj["idnum"].ToString()), UserName = userinfoObj["username"].ToString(), ExpireTime = DateTime.Now.AddHours(4),//浙里办的token时效也是4个小时 CreateTime = DateTime.Now, OriginalResponse = DESCEncryption.Encrypt(userinfoRsltStr, Common.GetZlbSecretKey()) }).ExecuteCommand(); if (temp1 <= 0) throw Oops.Oh("出现异常,请联系管理员"); return userinfoObj; } } /// /// 政策详细 /// /// /// [HttpPost("/policies/info")] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public async Task PolicieInfo([FromBody] JObject args) { var ticket = args.GetJsonValue("ticket", isThrowExp: true); var id = args.GetJsonGuidValue("id", isThrowExp: true); JObject userInfoObj = GetInfoByTicket(ticket); try { var cachedata = _cache.Get("IndexData-" + userInfoObj["idnum"]); if (!string.IsNullOrWhiteSpace(cachedata)) return JSON.Deserialize(cachedata).PoliciesRegulationsLists.List.Find(a => a.ID == id); } catch { } var listPoliciesRegulationsTemp = _cache.Get>("CacheData-PoliciesRegulations"); if (listPoliciesRegulationsTemp != null && listPoliciesRegulationsTemp.Count > 0) { return listPoliciesRegulationsTemp.Where(p => p.ID == id).Select(p => new PoliciesRegulation { ID = p.ID, Area = p.Area, Contents = p.Contents, PublicTime = p.PublicTime.HasValue ? p.PublicTime.Value.ToString("yyyy-MM-dd") : string.Empty, Title = p.Title }).First(); } else { var asd = db.Queryable().Where(p => p.ID == id).First(); var entity = db.Queryable().Where(p => p.ID == id).Select(p => new PoliciesRegulation { ID = p.ID, Area = p.Area, Contents = p.Contents, PublicTime = p.PublicTime.ToString(), Title = p.Title }).First(); entity.PublicTime = Convert.ToDateTime(entity.PublicTime).ToString("yyyy-MM-dd"); return entity; } } /// /// 协议详细 /// /// /// [HttpPost("/agreement/info_s")] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public IActionResult AgreementInfoStream([FromBody] JObject args) { var ticket = args.GetJsonValue("ticket", isThrowExp: true); var id = args.GetJsonGuidValue("id", isThrowExp: true); JObject userInfoObj = GetInfoByTicket(ticket); var XyFile = ""; //住宅 var entity_zz = db.Queryable().Where(p => p.ID == id).Select(p => new { p.ID, p.XyFile }).First(); if (entity_zz != null) { XyFile = entity_zz.XyFile; } //非住宅 else { var entity_fzz = db.Queryable().Where(p => p.ID == id).Select(p => new { p.ID, p.XyFile }).First(); if (entity_fzz != null) { XyFile = entity_fzz.XyFile; } else throw Oops.Oh("ID错误"); } if (string.IsNullOrEmpty(XyFile)) throw Oops.Oh("未上传附件"); var filePath = App.Configuration["nbzs_file_path"] + XyFile; return new FileStreamResult(new FileStream(filePath, FileMode.Open), "application/octet-stream") { FileDownloadName = new FileInfo(filePath).Name }; } /// /// 协议详细 /// /// /// [HttpPost("/agreement/info_p")] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public dynamic AgreementInfoPicture([FromBody] JObject args) { var ticket = args.GetJsonValue("ticket", isThrowExp: true); var id = args.GetJsonGuidValue("id", isThrowExp: true); JObject userInfoObj = GetInfoByTicket(ticket); //var cachedata=_cache.Get($"CacheData-ResidentialAgreement"); //if (!string.IsNullOrWhiteSpace(cachedata)) //{ // var listBcxy = JSON.Deserialize>(cachedata); // XyFile= listBcxy.Where(p => p.Id == id.ToString()).Select(p => new {ID= p.Id, XyFile=p.XyFile }).First(); //} var XyFile = ""; //住宅 var entity_zz = db.Queryable().Where(p => p.ID == id).Select(p => new { p.ID, p.XyFile }).First(); if (entity_zz != null) { XyFile = entity_zz.XyFile; } //非住宅 else { var entity_fzz = db.Queryable().Where(p => p.ID == id).Select(p => new { p.ID, p.XyFile }).First(); if (entity_fzz != null) { XyFile = entity_fzz.XyFile; } else throw Oops.Oh("ID错误"); } if (string.IsNullOrEmpty(XyFile)) throw Oops.Oh(-2001, "无附件"); var pics = new List(); //var nbzs_file_path = App.Configuration["nbzs_file_path"]; var nbzs_domain = App.Configuration["nbzs_domain"]; var current_domain = App.Configuration["current_domain"]; var filePath = GetCurrentRootPath() + XyFile; var pdfFile = new FileInfo(filePath); if (File.Exists(pdfFile.Directory + "\\" + pdfFile.Name + ".lock")) { var picCount = pdfFile.Directory.GetFiles(pdfFile.Name + "-*.jpg").Length; for (int i = 0; i < picCount; i++) { pics.Add(current_domain + XyFile + "-" + i + ".jpg"); } } else { var s = (nbzs_domain + XyFile).GetAsStreamAsync().Result; StreamToFile(s, XyFile); MagickReadSettings settings = new MagickReadSettings(); settings.Density = new Density(400, 400); //设置质量 using (MagickImageCollection images = new MagickImageCollection()) { try { images.Read(filePath, settings); for (int i = 0; i < images.Count; i++) { MagickImage image = (MagickImage)images[i]; image.Format = MagickFormat.Jpg; var imagename = filePath + "-" + i + ".jpg"; image.Write(imagename); pics.Add(current_domain + XyFile + "-" + i + ".jpg"); if (i == 0) { File.WriteAllText(pdfFile.Directory.FullName + "\\" + pdfFile.Name + ".lock", pdfFile.Name + ".lock"); } } } catch (Exception ex) { throw Oops.Oh(ex.Message + ex.StackTrace); throw Oops.Oh(-2002, "无附件文件[" + nbzs_domain + XyFile + "]"); } } } return new { pics, pdf = current_domain + XyFile }; } private readonly IHostingEnvironment _hostingEnvironment; private string GetCurrentRootPath() { return _hostingEnvironment.WebRootPath; //return Path.GetDirectoryName(this.GetType().Assembly.Location); } private string StreamToFile(Stream s, string filename) { var d = GetCurrentRootPath() + filename; FileInfo f = new(d); if (!f.Directory.Exists) f.Directory.Create(); using (MemoryStream stmMemory = new MemoryStream()) { byte[] buffer = new byte[s.Length]; int i; //将字节逐个放入到Byte中 while ((i = s.Read(buffer, 0, buffer.Length)) > 0) { stmMemory.Write(buffer, 0, i); } var fileBytes = stmMemory.ToArray();//文件流Byte,需要文件流可直接return,不需要下面的保存代码 stmMemory.Close(); using (MemoryStream m = new(fileBytes)) { using (FileStream fs = new(d, FileMode.OpenOrCreate)) { m.WriteTo(fs); fs.Close(); } m.Close(); } } return d; } /// /// 分布评估详细 /// /// /// [HttpPost("/house_estimate/info")] [Microsoft.AspNetCore.Authorization.AllowAnonymous] public dynamic HouseEstimateInfo([FromBody] JObject args) { var ticket = args.GetJsonValue("ticket", isThrowExp: true); var id = args.GetJsonGuidValue("id", isThrowExp: true); var type = args.GetJsonIntValue("type", isThrowExp: true); JObject userInfoObj = GetInfoByTicket(ticket); //var cardno = userInfoObj["idnum"].ToString(); FHPG jzlrModel = null; if (type == 1) { jzlrModel = db.Ado.SqlQuery("select a.ID,b.HouseAddress,a.ValuationMethod,a.AssessmentNo,a.HousingAssessmentValue,a.countValue,a.AttachedAssessedValue,a.DecorateAssessedValue,a.Remark,a.ExceedLandMoney,a.AtticAssessedValue,1 Type from InvestigateTable_Assessment a inner join InvestigateTable b on a.InvestigateTableID=b.ID where a.IsPublic=1 and a.ID=@ID", new { ID = id }).FirstOrDefault(); } else if (type == 2) { //非住宅 jzlrModel = db.Ado.SqlQuery("select b.HouseAddress,a.ValuationMethod,a.AssessmentNo,a.HousingAssessmentValue,a.countValue,a.AttachedAssessedValue,a.DecorateAssessedValue,a.Remark,a.ExceedLandMoney,2 Type from NonInvestigateTable_Assessment a inner join NonResidentialInvestigateTable b on a.NonInvestigateTableID=b.ID where a.IsPublic=1 and a.ID=@ID", new { ID = id }).FirstOrDefault(); } if (jzlrModel == null) throw Oops.Oh("ID有误"); switch (jzlrModel.ValuationMethod) { case 0: jzlrModel.ValuationMethodText = "价值录入"; break; case 1: jzlrModel.ValuationMethodText = "普通报告录入"; break; case 2: jzlrModel.ValuationMethodText = "自定义报告录入"; break; } //if (jzlrModel.ValuationMethod == 0) //{ //return jzlrModel; //} //else //{ return GetHouseEstimateFile(jzlrModel); //} } private dynamic GetHouseEstimateFile(FHPG jzlrModel) { var fileUrl = ""; if (jzlrModel.Type == 1) { //住宅 var entity_zz = db.Queryable().Where(p => p.ID == Guid.Parse(jzlrModel.Id)).Select(p => new { p.ID, p.AssementFile }).First(); if (entity_zz != null) { fileUrl = entity_zz.AssementFile; } } else if (jzlrModel.Type == 2) { //非住宅 var entity_fzz = db.Queryable().Where(p => p.ID == Guid.Parse(jzlrModel.Id)).Select(p => new { p.ID, p.AssementFile }).First(); if (entity_fzz != null) { fileUrl = entity_fzz.AssementFile; } } if (string.IsNullOrEmpty(fileUrl)) //throw Oops.Oh("未评估或未上传附件"); jzlrModel.IsExistPdf = false; else { var pics = new List(); var nbzs_file_path = App.Configuration["nbzs_file_path"]; var nbzs_domain = App.Configuration["nbzs_domain"]; var filePath = nbzs_file_path + fileUrl; var pdfFile = new FileInfo(filePath); if (!pdfFile.Exists) jzlrModel.IsExistPdf = false; else { if (File.Exists(pdfFile.Directory + "\\lock")) { var picCount = pdfFile.Directory.GetFiles(pdfFile.Name + "-*.jpg").Length; for (int i = 0; i < picCount; i++) { pics.Add(nbzs_domain + fileUrl + "-" + i + ".jpg"); } } else { MagickReadSettings settings = new MagickReadSettings(); settings.Density = new Density(400, 400); //设置质量 using (MagickImageCollection images = new MagickImageCollection()) { try { images.Read(filePath, settings); for (int i = 0; i < images.Count; i++) { MagickImage image = (MagickImage)images[i]; image.Format = MagickFormat.Jpg; var imagename = filePath + "-" + i + ".jpg"; image.Write(imagename); pics.Add(nbzs_domain + fileUrl + "-" + i + ".jpg"); if (i == 0) { File.WriteAllText(pdfFile.Directory.FullName + "\\lock", "lock"); } } } catch (Exception ex) { throw Oops.Oh(ex.Message); } } } //return new { ValuationMethod, ValuationMethodText, pics, pdf = nbzs_domain + fileUrl }; jzlrModel.Pdf = nbzs_domain + fileUrl; jzlrModel.Pics = pics.ToArray(); jzlrModel.IsExistPdf = true; } } return jzlrModel; } } }