using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using MadRunFabric.Common; using Microsoft.Extensions.Logging; using ConfigurationApi.IRepositories; using MadRunFabric.Model; using MongoDB.Driver; using Microsoft.AspNetCore.Authorization; using System.Security.Claims; using Api.SignToken; using Microsoft.Extensions.Configuration; namespace ConfigurationApi.Controllers { /// /// 楼层管理 - 例如:门诊楼10层 /// //[Authorize] [ApiVersion("6.0")] [Produces("application/json")] [Route("api/[controller]")] public class FloorManageController : BaseController { private readonly ILogger _logger; private readonly IConfiguration _configuration; private readonly ISys_User_AccountRepository _sys_user_accountRepository; private readonly ISys_BuildingRepository _sys_buildingrepository; private readonly ISys_FloorRepository _sys_floorrepository; private readonly ISignTokenService _signTokenService; public FloorManageController( ILogger logger, IConfiguration configuration, ISys_User_AccountRepository sys_user_accountRepository, ISys_BuildingRepository sys_buildingrepository, ISys_FloorRepository sys_floorrepository, ISignTokenService signTokenService ) { _logger = logger; _configuration = configuration; _sys_user_accountRepository = sys_user_accountRepository; _sys_buildingrepository = sys_buildingrepository; _sys_floorrepository = sys_floorrepository; _signTokenService = signTokenService; } #region 楼 /// /// 获取所有楼列表 /// /// [HttpGet("getbuildlistdrop")] public async Task GetBuildListdrop(string keyword, string projectid) { //排序字段 var sort = Builders.Sort.Descending("sortnum"); var list = await _sys_buildingrepository.Get(null, null, sort); //根据条件查询集合 var listfilter = new List>(); listfilter.Add(Builders.Filter.Eq("isdelete", 0)); //查询 if (!string.IsNullOrEmpty(projectid)) listfilter.Add(Builders.Filter.Eq("projectid", projectid)); if (!string.IsNullOrEmpty(keyword)) listfilter.Add(Builders.Filter.Where(s => s.buildname.Contains(keyword))); var filter = Builders.Filter.And(listfilter); list = await _sys_buildingrepository.Get(filter, null, sort); //var list = await _sys_departmentrepository.Get(x => x.isdelete == 0); //var listmodel = new List(); //foreach (var item in list) //{ // var model = new DropListDto(); // model.id = item.id; // model.text = item.project_name; // listmodel.Add(model); //} return Success("成功", list); } /// /// 获取楼列表 - 关联查询 /// /// [HttpGet("getbuildlistsbypage")] public IActionResult GetBuildListsByPage(string keyword, string projectid, int pageindex = 1, int pagesize = 10) { string rolecode = User.Claims.FirstOrDefault(c => c.Type == "RoleCode").Value; string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; //var userstr = _signTokenService.GetUserInfoAsync(usercode).Result; //var userinfo = userstr.ToJObject()["data"].ToString().ToObject(); string allprojectrole = _configuration["allprojectrole"]; var userinfos = _sys_user_accountRepository.GetUserInfo(usercode, allprojectrole); var userinfo = JsonHelper.JsonToEntity(userinfos.ToJson()); int recordCount = 0; var result = _sys_buildingrepository.GetBuildListsByPage(keyword, projectid, userinfo, pageindex, pagesize, out recordCount); var obj = new { rows = result, total = recordCount, }; return Success("获取成功", obj); } /// /// 获取楼层详情 by id - 关联查询 /// /// /// [HttpGet("getbuilddetails")] public IActionResult GetBuildDetails(string id) { if (string.IsNullOrEmpty(id)) return Error("参数错误"); var model = _sys_buildingrepository.GetBuildDetails(id); if (model != null) { return Success("获取成功!", model); } return Error("获取失败"); } /// /// 添加楼层 /// /// /// /// /// [HttpPost("addbuild")] public async Task AddBuildAsync(string projectid, string buildname, int sortnum, string remark) { string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; if (string.IsNullOrEmpty(projectid)) return Error("项目信息不能为空"); if (string.IsNullOrEmpty(buildname)) return Error("楼名称不能为空"); var model = new Sys_Building(); model.projectid = projectid; model.buildname = buildname; model.sortnum = sortnum; model.remark = remark; model.createtby = usercode; model.createtime = DateTime.Now.ToLocalTime(); //model.projectid = "5aab6f580d26390eac2bdc82"; //model.buildname = "1号楼"; //model.sortnum = 1; //model.remark = "1号楼"; //model.createtby = "8000"; //model.createtime = DateTime.Now.ToLocalTime(); bool b = await _sys_buildingrepository.Add(model); if (b) return Success("添加成功"); return Error("添加失败"); } /// /// 修改楼层信息 /// /// /// /// /// /// [HttpPost("updatebuild")] public async Task UpdateBuildAsync(string id, string projectid, string buildname, int sortnum, string remark) { if (string.IsNullOrEmpty(id)) return Error("参数错误"); if (string.IsNullOrEmpty(projectid)) return Error("项目信息不能为空"); if (string.IsNullOrEmpty(buildname)) return Error("楼名称不能为空"); var model = new Sys_Building(); model = await _sys_buildingrepository.GetSingle(id); if (model == null) return Error("操作失败"); model.projectid = projectid; model.buildname = buildname; model.sortnum = sortnum; model.remark = remark; bool b = await _sys_buildingrepository.Update(model); if (b) return Success("保存成功"); return Error("保存失败"); } /// /// 删除楼层信息 by ids /// /// string[] id /// [HttpPost("deletebuild")] public async Task DeleteBuildAsync(string[] ids) { string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; var res = 0; if (ids != null && ids.Length > 0) { foreach (var item in ids) { var ml = await _sys_buildingrepository.GetSingle(item); ml.isdelete = -1; ml.deleteby = usercode; ml.deletetime = DateTime.Now.ToLocalTime(); if (_sys_buildingrepository.Update(ml).Result) { res += 1; #region 批量删除 - 删对应的楼层信息信息 var imodel = new Sys_Floor(); Dictionary dic = new Dictionary(); dic.Add("isdelete", "1"); dic.Add("deleteby", usercode); dic.Add("deletetime", DateTime.Now.ToLocalTime().ToLongDateString()); var list = new List>(); var filterBuilder = Builders.Filter; list.Add(filterBuilder.Eq("projectid", item)); var filter = Builders.Filter.And(list); await _sys_floorrepository.UpdateManay(imodel, dic, filter); #endregion } } if (res == ids.Length) return Success("删除成功"); else if (res > 0 && res < ids.Length) return Error("部分删除失败,请查看后重新操作"); else return Error("删除失败,请查看后重新操作"); } else return Error("请选择要删除的记录"); } #endregion #region 楼层 /// /// 获取所有楼层列表 /// /// [HttpGet("getlistdrop")] public async Task GetListdrop(string keyword, string buildid) { //排序字段 var sort = Builders.Sort.Descending("sortnum"); var list = await _sys_floorrepository.Get(null, null, sort); var redCount = await _sys_floorrepository.CountAsync(null); //获取总数 //根据条件查询集合 var listfilter = new List>(); listfilter.Add(Builders.Filter.Eq("isdelete", 0)); //查询 if (!string.IsNullOrEmpty(buildid)) listfilter.Add(Builders.Filter.Eq("buildid", buildid)); if (!string.IsNullOrEmpty(keyword)) listfilter.Add(Builders.Filter.Where(s => s.floorname.Contains(keyword))); if (listfilter.Count > 0) { var filter = Builders.Filter.And(listfilter); list = await _sys_floorrepository.Get(filter, null, sort); } //var list = await _sys_departmentrepository.Get(x => x.isdelete == 0); //var listmodel = new List(); //foreach (var item in list) //{ // var model = new DropListDto(); // model.id = item.id; // model.text = item.project_name; // listmodel.Add(model); //} return Success("成功", list); } /// /// 获取楼层列表 by page /// /// /// /// /// [HttpGet("getlistbypage")] public async Task GetListByPageAsync(string keyword, int pageindex = 1, int pagesize = 10) { #region 条件信息 //排序字段 var sort = Builders.Sort.Descending("sortnum"); var list = await _sys_floorrepository.GetByPage(null, pageindex, pagesize, sort); var redCount = await _sys_floorrepository.CountAsync(null); //获取总数 //根据条件查询集合 var listfilter = new List>(); //模糊查询 if (!string.IsNullOrEmpty(keyword)) listfilter.Add(Builders.Filter.Where(s => s.floorname.Contains(keyword))); #endregion int recordCount = 0; if (listfilter.Count > 0) { var filter = Builders.Filter.And(listfilter); list = await _sys_floorrepository.GetByPage(filter, pageindex, pagesize, sort); redCount = await _sys_floorrepository.CountAsync(filter); //获取总数 } recordCount = int.Parse(redCount.ToString()); var obj = new { state = "success", message = "成功", rows = list, total = recordCount, }; return Content(obj.ToJson()); } /// /// 获取楼层列表 - 关联查询 /// /// [HttpGet("getlistsbypage")] public IActionResult GetListsByPage(string keyword,string buildid, int pageindex = 1, int pagesize = 10) { int recordCount = 0; var result = _sys_floorrepository.GetListsByPage(keyword, buildid, pageindex, pagesize, out recordCount); var obj = new { rows = result, total = recordCount, }; return Success("获取成功", obj); } /// /// 获取楼层详情 by id /// /// /// [HttpGet("getdetailes")] public async Task GetDetailsAsync(string id) { if (string.IsNullOrEmpty(id)) return Error("参数错误"); var model = await _sys_floorrepository.GetSingle(id); if (model != null) { var result = new { id = model.id, buildid = model.buildid, sortnum = model.sortnum, remark = model.remark, createtime = model.createtime, }; return Success("获取成功!", result); } return Error("获取失败"); } /// /// 获取楼层详情 by id - 关联查询 /// /// /// [HttpGet("getdetails")] public IActionResult GetDetails(string id) { if (string.IsNullOrEmpty(id)) return Error("参数错误"); var model = _sys_floorrepository.GetDetails(id); if (model != null) { return Success("获取成功!", model); } return Error("获取失败"); } /// /// 添加楼层 /// /// /// /// /// [HttpPost("add")] public async Task AddAsync(string buildid, string floorname, int sortnum, string remark) { string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; if (string.IsNullOrEmpty(buildid)) return Error("楼信息不能为空"); if (string.IsNullOrEmpty(floorname)) return Error("楼层名称不能为空"); var model = new Sys_Floor(); model.buildid = buildid; model.floorname = floorname; model.sortnum = sortnum; model.remark = remark; model.createtby = usercode; model.createtime = DateTime.Now.ToLocalTime(); //model.buildid = "5ad04d0c13d2380c3c0d6637"; //model.floorname = "10层"; //model.sortnum = 1; //model.remark = "门诊楼10层"; //model.createtby = "8000"; //model.createtime = DateTime.Now.ToLocalTime(); bool b = await _sys_floorrepository.Add(model); if (b) return Success("添加成功"); return Error("添加失败"); } /// /// 修改楼层信息 /// /// /// /// /// /// [HttpPost("update")] public async Task UpdateAsync(string id, string buildid, string floorname, int sortnum, string remark) { if (string.IsNullOrEmpty(id)) return Error("参数错误"); if (string.IsNullOrEmpty(buildid)) return Error("楼信息不能为空"); if (string.IsNullOrEmpty(floorname)) return Error("楼层名称不能为空"); var model = new Sys_Floor(); model = await _sys_floorrepository.GetSingle(id); if (model == null) return Error("操作失败"); model.buildid = buildid; model.floorname = floorname; model.sortnum = sortnum; model.remark = remark; bool b = await _sys_floorrepository.Update(model); if (b) return Success("保存成功"); return Error("保存失败"); } /// /// 删除楼层信息 by ids /// /// string[] id /// [HttpPost("delete")] public async Task DeleteAsync(string[] ids) { string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; var res = 0; if (ids != null && ids.Length > 0) { foreach (var item in ids) { var ml = await _sys_floorrepository.GetSingle(item); ml.isdelete = -1; ml.deleteby = usercode; ml.deletetime = DateTime.Now.ToLocalTime(); if (_sys_floorrepository.Update(ml).Result) res += 1; } if (res == ids.Length) return Success("删除成功"); else if (res > 0 && res < ids.Length) return Error("部分删除失败,请查看后重新操作"); else return Error("删除失败,请查看后重新操作"); } else return Error("请选择要删除的记录"); } #endregion /// /// 获取五级联动 /// /// /// /// [HttpGet("gettree")] public IActionResult GetTree() { var result = _sys_floorrepository.GetTree(); return Success("成功", result); } } }