using Ewide.NbzsZheliban.Entity; using Ewide.NbzsZheliban.Entity.Base; using Ewide.NbzsZheliban.Entity.Extends; using Ewide.NbzsZheliban.Tools; using Furion; using Furion.DataEncryption; using Furion.FriendlyException; using Furion.JsonSerialization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 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; public DataService(ISqlSugarRepository sqlSugarRepository, IJsonSerializerProvider jsonSerializer) { repository = sqlSugarRepository; db = repository.Context; _jsonSerializer = jsonSerializer; } private JObject GetInfoByTicket(string ticket) { if (!string.IsNullOrWhiteSpace(ticket)) { 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($"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($"ticket接口返回值有误,[{tickerRsltStr}]"); return userinfoObj; } else { throw Oops.Oh("无效访问"); } } private async Task GetInfoByCardNoAsync(string cardno, string username) { //var cardno = args.GetJsonValue("cardno", isThrowExp: true); //住宅调查表 var list_zz_dcb = 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()); //非住宅调查表 var list_fzz_dcb = await db.Ado.SqlQueryAsync("select ID dcbId,ProjectId PrjId from NonResidentialInvestigateTable b where b.PropertyRightCardNo=@ExpropriatedCardNo", new List { new SugarParameter("ExpropriatedCardNo", cardno, System.Data.DbType.String) }.ToArray()); //调查表集合 var list_dcbs = list_zz_dcb.Concat(list_fzz_dcb); //项目列表 var list_projects = 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 from Projects a where ID in ('" + string.Join("','", list_dcbs.Select(p => p.PrjId)) + "') "); //分户评估 var InvestigateTableID_param = "'" + string.Join("','", list_dcbs.Select(p => p.dcbId)) + "'"; var list_fhpgs = await db.Ado.SqlQueryAsync("select e.ProjectId as PrjId ,d.AssessmentNo,e.HouseAddress,d.countValue from InvestigateTable_Assessment d inner join InvestigateTable e on d.InvestigateTableId=e.ID where d.InvestigateTableID in ( " + InvestigateTableID_param + " ) union all select e.ProjectId as PrjId ,AssessmentNo, e.HouseAddress, d.countValue from NonInvestigateTable_Assessment d inner join NonResidentialInvestigateTable e on d.NonInvestigateTableID = e.ID where d.NonInvestigateTableID in ( " + InvestigateTableID_param + " ) ;"); //补偿协议 var list_bcxys = await db.Ado.SqlQueryAsync("select 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 from ResidentialAgreement d inner join InvestigateTable e on d.InvestigateTableId=e.ID where d.InvestigateTableID in ( " + InvestigateTableID_param + " ) union all select isnull(d.CollectDecisionNoHeadName, '') + isnull(d.No2, '') + '-' + isnull(d.No3, '') XyNo , d.SwitchProductionWay, e.HouseAddress, d.SummationShouldCompensateMoney, e.ProjectId as PrjId from NonResidentialAgreement d inner join NonResidentialInvestigateTable e on d.NonInvestigateTableID = e.ID where d.NonInvestigateTableID in ( " + InvestigateTableID_param + " ); "); //政策 var list_PoliciesRegulations = await db.Queryable().ToListAsync(); 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); p.BcxyList = list_bcxys.Where(a => a.PrjId == p.PrjId); listAreas.Add(Guid.Parse(p.AreaID)); }); H5IndexModel h5IndexModel = new() { PrjList = list_projects, IdCard = cardno, UserName = username, PoliciesRegulationsList = list_PoliciesRegulations.Where(a => listAreas.Contains(a.AreaID)).Select(b => new PoliciesRegulation { ID = b.ID, Contents = b.Contents, PublicTime = b.PublicTime, Title = b.Title }).ToList() }; return h5IndexModel; } /// /// 被征收人关联的项目列表 /// /// /// [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(); 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); } } }