using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Ropin.Inspection.Api.Common; using Ropin.Inspection.Api.Controllers; using Ropin.Inspection.Model; using Ropin.Inspection.Service; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Ropin.Core.Extensions.Redis; using Ropin.Core.Common; using Ropin.Inspection.Service.DEV.Interface; using Ropin.Inspection.Model.ViewModel.DEV; using Newtonsoft.Json.Linq; using Ropin.Inspection.Model.SearchModel.DEV; namespace Ropin.Inspection.Api { public class TdevDevStoreController : BaseController { public ILogger _logger { get; } private readonly ITdevDevStoreService _TdevDevStoreService; private readonly IPushMsgService _pushMsgService; private readonly IRedisBasketRepository _redisBasketRepository; private readonly ITdevDevOpeAccountService _tdevDevOpeAccountService; private readonly IDevDevOpeAccountConfigService _devDevOpeAccountConfigService; /// /// 构造函数 /// /// /// public TdevDevStoreController(ITdevDevStoreService TdevDevStoreService, ITdevDevOpeAccountService tdevDevOpeAccountService,IRedisBasketRepository redisBasketRepository, IPushMsgService pushMsgService, ILogger logger, IDevDevOpeAccountConfigService devDevOpeAccountConfigService) { _TdevDevStoreService = TdevDevStoreService; _logger = logger; _pushMsgService = pushMsgService; _redisBasketRepository = redisBasketRepository; _tdevDevOpeAccountService = tdevDevOpeAccountService; _devDevOpeAccountConfigService = devDevOpeAccountConfigService; } /// /// 通过id获取业主设备信息 /// /// /// [HttpGet("GetDevStoreAsync/{id}")] [AllowAnonymous] public async Task GetDevStoreAsync(string id) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { var content = await _TdevDevStoreService.GetConditionAsync(new TdevDevStoreSearchModel { C_ID = id, type= "details" }); var dev = content.FirstOrDefault(); var user = await _TdevDevStoreService.GetUserByDevStoreIdAndRoleNameAsync(id,"设备管理员"); if(dev != null) dev.DevManager = user?.C_Name; return new ApiResult(dev); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 通过id获取业主设备二维码地址信息 /// /// /// [HttpGet("GetDevStoreQRCodeAsync/{id}")] public async Task GetDevStoreQRCodeAsync(string id) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { var content = await _TdevDevStoreService.GetDevStoreQRCodeAsync(id); return new ApiResult(content); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 获取所有业主设备 /// /// [HttpGet("GetDevStoresAsync")] public async Task GetDevStoresAsync() { try { var contentList = await _TdevDevStoreService.GetAllAsync(); return new ApiResult>(contentList); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 通过业主设备名称条件查询 /// /// /// [HttpPost("GetDevStoresByAsync")] public async Task GetDevStoresByAsync(TdevDevStoreSearchModel searchModel) { if (searchModel == null) { return new ApiResult(ReturnCode.ArgsError); } //searchModel.IsPagination = false; try { var contentList = await _TdevDevStoreService.GetConditionAsync(searchModel); PagesModel pages = new PagesModel(searchModel.IsPagination ? contentList.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : contentList, searchModel); return new ApiResult>(pages); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 通过业主设备名称条件查询(数据包时间) /// /// /// [HttpPost("GetDevStoresByAsync1")] public async Task GetDevStoresByAsync1(TdevDevStoreSearchModel searchModel) { if (searchModel == null) { return new ApiResult(ReturnCode.ArgsError); } //searchModel.IsPagination = false; try { var contentList = await _TdevDevStoreService.GetConditionAsync(searchModel); foreach (var item in contentList) { if (item!=null) { var content = await _redisBasketRepository.GetValue(RedisKey.Fanyibox_DevStore_ + item.C_ID); if (content!=null) { try { JObject jsonObj = JObject.Parse(content); if (jsonObj != null&& jsonObj["package"].Any()) { JObject address = (JObject)jsonObj["package"]; item.packageTime = address["time"].ToString(); } } catch { } } } } PagesModel pages = new PagesModel(searchModel.IsPagination ? contentList.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : contentList, searchModel); return new ApiResult>(pages); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 业主设备状态统计 /// /// /// [HttpPost("GetDevStoreStatusCount")] public async Task GetDevStoreStatusCount(TdevDevStoreSearchModel searchModel) { if (searchModel == null) { return new ApiResult(ReturnCode.ArgsError); } try { var contentList = await _TdevDevStoreService.GetDevStoreStatusCount(searchModel); PagesModel pages = new PagesModel(searchModel.IsPagination ? contentList.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : contentList, searchModel); return new ApiResult>(pages); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 创建业主设备 /// /// /// [HttpPost("CreateDevStoreAsync")] public async Task CreateDevStoreAsync(TdevDevStoreViewModel content) { if (content == null) { return new ApiResult(ReturnCode.ArgsError); } try { await _TdevDevStoreService.CreateOneAsync(content); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } return new ApiResult(ReturnCode.Success); } /// /// 删除业主设备 /// /// /// [HttpDelete("DeleteDevStoreAsync/{id}")] public async Task DeleteDevStoreAsync(string id) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { await _TdevDevStoreService.DeleteAsync(id); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } return new ApiResult(ReturnCode.Success); } /// /// 更新业主设备 /// /// /// /// [HttpPut("UpdateDevStoreAsync/{id}")] [AllowAnonymous] public async Task UpdateDevStoreAsync(string id, TdevDevStoreUpdateModel updateModel) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { await _TdevDevStoreService.UpdateAsync(id, updateModel); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } return new ApiResult(ReturnCode.Success); } /// /// 通过二维码获取点及设备信息 /// /// /// /// [HttpGet("GetDevStoreByQRCodeAsync/{qRCode}/{storeCode}")] [AllowAnonymous] public async Task GetDevStoreByQRCodeAsync(string qRCode, string storeCode) { try { if (string.IsNullOrEmpty(qRCode) || string.IsNullOrEmpty(storeCode)) { return new ApiResult(ReturnCode.GeneralError); } var spot = await _TdevDevStoreService.GetDevStoreByQRCodeAsync(qRCode, storeCode); if (null == spot) { return new ApiResult(spot, ReturnCode.ResultError, "没找到此二维码对应的点,请联系管理员!"); } return new ApiResult(spot); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 操作设备 /// /// /// [HttpPost("DevOperateByQRCodeAsync")] [AllowAnonymous] public async Task DevOperateByQRCodeAsync(DevOperateCreateModel mode) { if (mode == null) { return new ApiResult(ReturnCode.ArgsError); } try { await _TdevDevStoreService.DevOperateByQRCodeAsync(mode); //await _redisBasketRepository.Set(RedisKey.Fanyibox_Ope_DevStore + mode.C_DevStoreCode, mode.C_Type, TimeSpan.FromDays(7)); await _pushMsgService.PushAlarmMsgAsync(new TpushMsgModel { C_DevStoreCode = mode.C_DevStoreCode, C_MsgTypeCode = "MSG_TYPE_011", Msg = mode.C_Remark, Subject = "设备启停 " + mode.C_LogMsg, DevNumber = String.Empty, DevName =String.Empty, GenerationType = 2, msgStatus = 4, }, "设备启停"); //string strContent = ""; //await _tdevDevOpeAccountService.CreateOneAsync(new TdevDevOpeAccountViewModel{ C_DevStoreCode = mode.C_DevStoreCode,C_Content = strContent }); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } return new ApiResult(ReturnCode.Success); } /// /// 获取设备运行点配置 /// /// /// [HttpGet("GetDevStoreRunSpotConfigAsync/{id}")] [AllowAnonymous] public async Task GetDevStoreRunSpotConfigAsync(string id) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { //TDEV_DevRunSpot //var content = await _TdevDevStoreService.GetConditionAsync(new TdevDevStoreSearchModel { C_ID = id }); //TdevDevStoreRunSpotConfigViewModel mode = new TdevDevStoreRunSpotConfigViewModel(); ////RunSpotConfig f1 = new RunSpotConfig() { Name = "排污口编号",Value = "325465465" }; ////RunSpotConfig f2 = new RunSpotConfig() { Name = "设施名称",Value = "VOCs治理设施" }; ////mode.RunSpotConfigList = new List() { f1,f2}; //if (content.FirstOrDefault().C_RunSpotConfig == null) // return new ApiResult>(new List()); //else //return new ApiResult(JsonConvert.DeserializeObject(content.FirstOrDefault().C_RunSpotConfig)); var content = await _devDevOpeAccountConfigService.GetDevOpeAccountConfigModelAsync(id); if (content == null|| string.IsNullOrEmpty(content.C_Config)) { return new ApiResult>(new List()); } else { return new ApiResult(JsonConvert.DeserializeObject(content.C_Config)); } } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 更新设备运行点配置 /// /// /// /// [HttpPut("UpdateDevStoreRunSpotConfigAsync/{id}")] public async Task UpdateDevStoreRunSpotConfigAsync(string id, TdevDevStoreRunSpotConfigViewModel updateModel) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { await _TdevDevStoreService.UpdateDevStoreRunSpotConfigAsync(id, updateModel); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } return new ApiResult(ReturnCode.Success); } /// /// 更新设备用户配置 /// /// /// /// [HttpPut("UpdateDevStoreUserConfigAsync/{id}")] [AllowAnonymous] public async Task UpdateDevStoreUserConfigAsync(string id, TdevDevStoreUserConfigViewModel updateModel) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { await _TdevDevStoreService.UpdateDevStoreUserConfigAsync(id, updateModel); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } return new ApiResult(ReturnCode.Success); } /// /// 获取设备用户配置 /// /// /// [HttpGet("GetDevStoreUserConfigAsync/{id}")] [AllowAnonymous] public async Task GetDevStoreUserConfigAsync(string id) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { var content = await _TdevDevStoreService.GetConditionAsync(new TdevDevStoreSearchModel { C_ID = id }); if(content.FirstOrDefault().C_UserConfig == null) { return new ApiResult>(new List()); } else { IEnumerable users = JsonConvert.DeserializeObject>(content.FirstOrDefault().C_UserConfig).OrderBy(t=>t.Sort); return new ApiResult>(users); } } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } /// /// 拷贝业主设备信息 /// /// /// [HttpPost("CopyDevStoreInfo")] [AllowAnonymous] public async Task CopyDevStoreInfo(string id) { if (string.IsNullOrEmpty(id)) { return new ApiResult(ReturnCode.GeneralError); } try { await _TdevDevStoreService.CopyCreateOneAsync(id); return new ApiResult(ReturnCode.Success); } catch (Exception ex) { return new ApiResult(ReturnCode.GeneralError, ex.Message); } } } }