using Dapper;
using Ewide.Core.Extension;
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ewide.Application.Service.HouseSafety.HouseQuery
{
///
/// 住宅查询
///
[ApiDescriptionSettings(Name = "HouseQuery", Order = 210)]
public class HouseQueryService : IHouseQueryService, IDynamicApiController, ITransient
{
private readonly IRepository _houseCodeRep;
private readonly IRepository _houseInfoRep;
private readonly IRepository _houseTaskRep;
private readonly IDapperRepository _dapperRepository;
public HouseQueryService(IRepository HouseCodeRep, IRepository HouseInfoRep, IRepository HouseTaskRep, IDapperRepository dapperRepository)
{
_houseCodeRep = HouseCodeRep;
_houseInfoRep = HouseInfoRep;
_houseTaskRep = HouseTaskRep;
_dapperRepository = dapperRepository;
}
[HttpPost("/houseQuery/page")]
public async Task QueryPage([FromBody] HouseQueryInput input)
{
var sql = @"SELECT HC.ID,HC.HouseCode,AA.Name AreaName,RA.Name RoadName,CA.Name CommName,CA.AdCode AreaCode,Proj.AreaCode,Proj.Note,Proj.Name,CONCAT(Proj.Name,'(',Proj.Note,')') FullProjName,HC.Address,IFNULL(HI.BuildingName,'') BuildingName,IFNULL(HI.TotalFloor,0) TotalFloor,IFNULL(HI.TotalArea,0) TotalArea,HI.LandAttribute,IFNULL(HI.HouseGrade,0) HouseGrade,HC.Type,HC.No,HI.State FROM bs_house_code HC
LEFT JOIN bs_house_info HI ON HI.HouseCodeId = HC.Id
LEFT JOIN bs_house_projectinfo Proj ON Proj.Id=HC.ProjectId
LEFT JOIN sys_area_code CA ON CA.Code = Proj.AreaCode
LEFT JOIN sys_area_code RA ON RA.AdCode = SUBSTR(CA.AdCode,1,9)
LEFT JOIN sys_area_code AA ON AA.AdCode = SUBSTR(CA.AdCode,1,6)
WHERE 1=1";
return await _dapperRepository.QueryPageDataDynamic(sql, input, filterFields: new string[] { "HouseCode", "Address", "BuildingName", "State", "AreaCode", "LandAttribute", "HouseGrade" });
}
}
}