83 lines
3.8 KiB
C#
83 lines
3.8 KiB
C#
using Dapper;
|
|
using Ewide.Core;
|
|
using Furion.DatabaseAccessor;
|
|
using Furion.DependencyInjection;
|
|
using Furion.DynamicApiController;
|
|
using Furion.FriendlyException;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Ewide.Application.Service.HouseSafety.HouseInfo
|
|
{
|
|
/// <summary>
|
|
/// 房屋详细信息
|
|
/// </summary>
|
|
[ApiDescriptionSettings(Name = "HouseInfo", Order = 200)]
|
|
public class HouseInfoService : IHouseInfoService, IDynamicApiController, ITransient
|
|
{
|
|
|
|
private readonly IRepository<BsHouseCode> _houseCodeRep;
|
|
private readonly IRepository<BsHouseInfo> _houseInfoRep;
|
|
private readonly IUserManager _userManager;
|
|
private readonly IDapperRepository _dapperRepository;
|
|
|
|
|
|
public HouseInfoService(IRepository<BsHouseCode> HouseCodeRep,IRepository<BsHouseInfo> HouseInfoRep, IUserManager userManager, IDapperRepository dapperRepository)
|
|
{
|
|
_houseCodeRep = HouseCodeRep;
|
|
_houseInfoRep = HouseInfoRep;
|
|
_userManager = userManager;
|
|
_dapperRepository = dapperRepository;
|
|
}
|
|
|
|
[HttpGet("/houseInfo/getByTaskId")]
|
|
[AllowAnonymous]
|
|
public async Task<HouseInfoOutputForDetailPage> GetByTaskId([Required] string taskId)
|
|
{
|
|
var houseTaskRep = Db.GetRepository<BsHouseTask>();
|
|
var houseTask = await houseTaskRep.DetachedEntities.FirstOrDefaultAsync(t=>t.Id == taskId);
|
|
if(houseTask == null) throw Oops.Oh("任务不存在");
|
|
|
|
var houseCodeOutputAsync = await _dapperRepository.QueryAsync<HouseCodeOutput>(
|
|
@"SELECT HC.Id,HC.Address,HC.ProjectId,HC.ZoneId,HC.Type,AA.Name AreaName,RA.Name RoadName,CA.Name CommName,Proj.Note ProjectNote,CONCAT(Proj.Name,'(',Proj.Note,')') ProjectFullName,HC.HouseCode,HC.Lng,HC.Lat FROM bs_house_code HC
|
|
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 HC.Id=@HouseCodeId", new { houseTask.HouseCodeId }
|
|
);
|
|
var houseCodeOutput= houseCodeOutputAsync.SingleOrDefault();
|
|
if (houseCodeOutput == null) throw Oops.Oh("任务已失效:房屋编码不存在");
|
|
|
|
var currentUser = await _userManager.CheckUserAsync();
|
|
|
|
var houseInfo = await _houseInfoRep.DetachedEntities.FirstOrDefaultAsync(h => h.HouseCodeId == houseTask.HouseCodeId);
|
|
var houseInfoOutputForDetailPage = new HouseInfoOutputForDetailPage
|
|
{
|
|
houseCode = houseCodeOutput
|
|
};
|
|
houseInfoOutputForDetailPage.PatrolInfo = new PatrolInfo();
|
|
houseInfoOutputForDetailPage.PatrolInfo.PatrolDate = houseTask.PatrolDate.GetValueOrDefault(DateTime.Now);
|
|
houseInfoOutputForDetailPage.PatrolInfo.PatrolUser = String.IsNullOrEmpty(houseTask.PatrolUser) ? currentUser.Name : houseTask.PatrolUser;
|
|
if (houseInfo == null)
|
|
{
|
|
houseInfoOutputForDetailPage.houseInfoOutput = new HouseInfoOutput();
|
|
return houseInfoOutputForDetailPage;
|
|
}
|
|
|
|
var houseInfoOutputAsync = await _dapperRepository.QueryAsync<HouseInfoOutput>("SELECT * FROM bs_house_info HI WHERE Id = @HouseCodeId", new { houseTask.HouseCodeId });
|
|
var houseInfoOutput = houseInfoOutputAsync.SingleOrDefault();
|
|
houseInfoOutputForDetailPage.houseInfoOutput = houseInfoOutput;
|
|
|
|
return houseInfoOutputForDetailPage;
|
|
}
|
|
}
|
|
}
|