TdevWebScadaDevSpotService.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. using AutoMapper;
  2. using LinqKit;
  3. using Microsoft.AspNetCore.NodeServices;
  4. using Newtonsoft.Json;
  5. using Ropin.Inspection.Common.Accessor.Interface;
  6. using Ropin.Inspection.Common.Helper;
  7. using Ropin.Inspection.Model;
  8. using Ropin.Inspection.Model.Entities;
  9. using Ropin.Inspection.Model.SearchModel.DEV;
  10. using Ropin.Inspection.Model.ViewModel.DEV;
  11. using Ropin.Inspection.Repository;
  12. using Ropin.Inspection.Repository.DEV.Interface;
  13. using Ropin.Inspection.Repository.Interface;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Linq;
  17. using System.Linq.Expressions;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. namespace Ropin.Inspection.Service
  21. {
  22. public class TdevWebScadaDevSpotService : ITdevWebScadaDevSpotService
  23. {
  24. private readonly ITdevWebScadaDevSpotRepository _repository;
  25. private readonly IMapper _mapper;
  26. private readonly IClaimsAccessor _claims;
  27. private readonly INodeServices _services;
  28. private readonly IDevBoxRepository _devBoxRepository;
  29. public TdevWebScadaDevSpotService(IClaimsAccessor claims, INodeServices services, ITdevWebScadaDevSpotRepository repository, IMapper mapper, IDevBoxRepository devBoxRepository)
  30. {
  31. _repository = repository;
  32. _mapper = mapper;
  33. _claims = claims;
  34. _services = services;
  35. _devBoxRepository= devBoxRepository;
  36. }
  37. public async Task CreateAsync(TdevWebScadaDevSpotCreateModel viewModel)
  38. {
  39. var content = _mapper.Map<TDEV_WebScadaDevSpot>(viewModel);
  40. content.C_ID = Guid.NewGuid().ToString();
  41. content.C_CreateBy = _claims.ApiUserId;
  42. content.D_CreateOn = DateTime.Now;
  43. content.C_Status = "1";
  44. content.C_Type = "1";
  45. List<CalFormula> calFormulaList = new List<CalFormula>();
  46. if (viewModel.IsCalFormula)
  47. {
  48. if (!string.IsNullOrWhiteSpace(viewModel.C_CalFormula))
  49. {
  50. var calsList = JsonConvert.DeserializeObject<List<CalFormula>>(viewModel.C_CalFormula);
  51. if (calsList!=null&& calsList.Count>0)
  52. {
  53. calFormulaList.AddRange(calsList);
  54. }
  55. }
  56. }
  57. if (!string.IsNullOrWhiteSpace(viewModel.MinValue) || !string.IsNullOrWhiteSpace(viewModel.MaxValue))
  58. {
  59. //content.C_CalFormula = "./wwwroot/uploads/scripts/changecolour," + viewModel.MinValue +","+ viewModel.MaxValue;
  60. Queue<string> qu = new Queue<string>();
  61. qu.Enqueue(viewModel.MinValue);
  62. qu.Enqueue(viewModel.MaxValue);
  63. calFormulaList.Add(new CalFormula { Name = "changecolour", Value = qu });
  64. //calFormulaList.Add(new CalFormula { Name = "alarmlight", Value = qu });
  65. //content.C_CalFormula = JsonHelper.GetJSON<List<CalFormula>>(calFormulaList);
  66. //content.C_CalFormula = JsonConvert.SerializeObject(calFormulaList);
  67. }
  68. if (!string.IsNullOrWhiteSpace(viewModel.FMinValue) || !string.IsNullOrWhiteSpace(viewModel.FMaxValue))
  69. {
  70. Queue<string> qu = new Queue<string>();
  71. qu.Enqueue(viewModel.FMinValue);
  72. qu.Enqueue(viewModel.FMaxValue);
  73. calFormulaList.Add(new CalFormula { Name = "minchangecolour", Value = qu });
  74. }
  75. if (!string.IsNullOrWhiteSpace(viewModel.AlarmValue))
  76. {
  77. //List<CalFormula> calFormulaList = new List<CalFormula>();
  78. Queue<string> qu = new Queue<string>();
  79. qu.Enqueue(viewModel.AlarmValue);
  80. calFormulaList.Add(new CalFormula { Name = "alarmlight", Value = qu });
  81. //content.C_CalFormula = JsonConvert.SerializeObject(calFormulaList);
  82. }
  83. if (calFormulaList.Any())
  84. content.C_CalFormula = JsonConvert.SerializeObject(calFormulaList);
  85. else
  86. content.C_CalFormula = @"[{'Name':'noformula','Value':['']}]";
  87. content.C_ControlID = "ControlID" + content.C_ID;
  88. content.C_DevSpotCode = content.C_ID;
  89. _repository.Create(content);
  90. var result = await _repository.SaveAsync();
  91. if (result)
  92. {
  93. if (viewModel.boxCodeList != null && viewModel.boxCodeList.Count > 0)
  94. {
  95. foreach (var item in viewModel.boxCodeList)
  96. {
  97. TDEV_DevBox devBox = new TDEV_DevBox();
  98. devBox.C_ID = Guid.NewGuid().ToString();
  99. devBox.C_BoxCode = item;
  100. devBox.C_DevStoreCode = content.C_DevCode;
  101. devBox.C_CreateBy = _claims.ApiUserId.ToString();
  102. devBox.D_CreateOn = DateTime.Now;
  103. devBox.C_Creator = _claims.ApiUserName;
  104. _devBoxRepository.Create(devBox);
  105. }
  106. var devBoxResult = await _devBoxRepository.SaveAsync();
  107. }
  108. }
  109. else
  110. {
  111. throw new Exception("创建失败");
  112. }
  113. }
  114. //public async Task DeleteAsync(string id)
  115. //{
  116. // var content = await _repository.GetByIdAsync(id);
  117. // if (content == null)
  118. // {
  119. // throw new Exception("数据库中没有此数据");
  120. // }
  121. // //_repository.Delete(content);
  122. // //var result = await _repository.SaveAsync();
  123. // content.C_LastUpdatedBy = _claims.ApiUserId;
  124. // content.D_LastUpdatedOn = DateTime.Now;
  125. // content.C_Status = "0";
  126. // _repository.Update(content);
  127. // var result = await _repository.SaveAsync();
  128. // if (!result)
  129. // {
  130. // throw new Exception("删除失败");
  131. // }
  132. //}
  133. public async Task DeleteAsync(string code)
  134. {
  135. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  136. var content = items.FirstOrDefault();
  137. if (content == null)
  138. {
  139. throw new Exception("没有此数据");
  140. }
  141. content.C_LastUpdatedBy = _claims.ApiUserId;
  142. content.D_LastUpdatedOn = DateTime.Now;
  143. content.C_Status = "0";
  144. _repository.Update(content);
  145. var result = await _repository.SaveAsync();
  146. if (!result)
  147. {
  148. throw new Exception("删除失败");
  149. }
  150. }
  151. public async Task DeleteDataAsync(string code)
  152. {
  153. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  154. var content = items.FirstOrDefault();
  155. if (content == null)
  156. {
  157. throw new Exception("没有此数据");
  158. }
  159. _repository.Delete(content);
  160. var result = await _repository.SaveAsync();
  161. if (!result)
  162. {
  163. throw new Exception("删除失败");
  164. }
  165. }
  166. public async Task<IEnumerable<TdevWebScadaDevSpotViewModel>> GetAllAsync()
  167. {
  168. var pagedList = await _repository.GetAllAsync();
  169. var contentDtoList = _mapper.Map<IEnumerable<TdevWebScadaDevSpotViewModel>>(pagedList.Where(i => i.C_Status == "1").ToList());
  170. return contentDtoList.ToList();
  171. }
  172. public async Task<IEnumerable<TdevWebScadaDevSpotViewModel>> GetConditionAsync(TdevWebScadaDevSpotSearchModel searchModel)
  173. {
  174. var list = await _repository.GetConditionAsync(searchModel);
  175. var dtoList = _mapper.Map<List<TDEV_WebScadaDevSpotEndity>, List<TdevWebScadaDevSpotViewModel>>(list?.ToList());
  176. return dtoList;
  177. }
  178. public async Task<string> GetWebScadaByAsync(string devId)
  179. {
  180. var predicate = PredicateBuilder.New<TDEV_WebScadaDevSpot>(true);//查询条件,推荐后台使用这种方式灵活筛选
  181. predicate = predicate.And(i => i.C_Status.Equals("1"));
  182. predicate = predicate.And(i => i.C_DevCode.Equals(devId));
  183. var items = await _repository.GetByConditionAsync(predicate);
  184. var list = items.ToList();
  185. StringBuilder sb = new StringBuilder();
  186. for (int i=0; i<list.Count;i++)
  187. {
  188. sb.Append(GetRichTextBoxWebScadaById(i));
  189. }
  190. return sb.ToString();
  191. }
  192. string GetRichTextBoxWebScadaById(int index)
  193. {
  194. int baseTop = 820;
  195. int top = baseTop + index * 100;
  196. string strIndex = index.ToString();
  197. string webScada = @"<input name='RichTextBox" + strIndex + @"' type='text' id='RichTextBox" + strIndex + @"' v-model='device.value" + strIndex + @"' style='width:160px;height: 80px;z-index:129;position:absolute;top: " + top + @"px;left:761px;font-size:32px; ' /><span id='Lable" + strIndex + @"' style='width:700px;height: 63px;z-index:126;position:absolute;top: " + strIndex + 10 + @"px;left:0px;font-size:32px;'>{{device.name" + strIndex + @"}}</span>";
  198. return webScada;
  199. }
  200. public async Task<string> GetWebScadaDevSpotValue(string devId)
  201. {
  202. var predicate = PredicateBuilder.New<TDEV_WebScadaDevSpot>(true);//查询条件,推荐后台使用这种方式灵活筛选
  203. predicate = predicate.And(i => i.C_Status.Equals("1"));
  204. predicate = predicate.And(i => i.C_DevCode.Equals(devId));
  205. var items = await _repository.GetByConditionAsync(predicate);
  206. if (!items.Any())
  207. return String.Empty;
  208. List<string> names = items.Select(x => x.C_Name).ToList();
  209. List<string> groupnames = items.Select(x => x.C_GroupName).ToList();
  210. List<string> calFormula = items.Select(x => x.C_CalFormula ).ToList();
  211. List<List<CalFormula>> calFormulaList = new List<List<CalFormula>>();
  212. //var calFormulaList = JsonConvert.DeserializeObject<List<List<CalFormula>>>(JsonConvert.SerializeObject(calFormula));
  213. foreach (var v in calFormula)
  214. {
  215. if(v != null)
  216. calFormulaList.Add(JsonConvert.DeserializeObject<List<CalFormula>>(v));
  217. }
  218. if (calFormulaList.Count ==0)
  219. {
  220. calFormulaList = null;
  221. calFormula = null;
  222. }
  223. string boxno = items.Select(x => x.C_BoxNo).FirstOrDefault();
  224. string storeCode = items.Select(x => x.C_StoreCode).FirstOrDefault();
  225. //List <List<CalFormula>> calFormulaList = items.Select(x => { var v= JsonConvert.DeserializeObject<List<CalFormula>>(x.C_CalFormula);return v; }).ToList();
  226. return await FanyiHelper.GetWebScadaDevSpotValue(devId, boxno, storeCode, names, groupnames, calFormula, _services, calFormulaList);
  227. }
  228. public async Task<string> GetWebScadaDevSpotHisData(string devId)
  229. {
  230. return await FanyiHelper.GetWebScadaDevSpotHisData(devId,null,null);
  231. }
  232. public async Task<TdevWebScadaDevSpotViewModel> GetByIdAsync(string id)
  233. {
  234. var content = await _repository.GetByIdAsync(id);
  235. var contentDto = _mapper.Map<TdevWebScadaDevSpotViewModel>(content);
  236. return contentDto;
  237. }
  238. public async Task UpdateAsync(string code, TdevWebScadaDevSpotUpdateModel updateModel)
  239. {
  240. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  241. var content = items.FirstOrDefault();
  242. if (content == null)
  243. {
  244. throw new Exception("没有此数据");
  245. }
  246. content.C_LastUpdatedBy = _claims.ApiUserId;
  247. content.D_LastUpdatedOn = DateTime.Now;
  248. _mapper.Map(updateModel, content, typeof(TdevWebScadaDevSpotUpdateModel), typeof(TDEV_WebScadaDevSpot));
  249. List<CalFormula> calFormulaList = new List<CalFormula>();
  250. if (updateModel.IsCalFormula)
  251. {
  252. if (!string.IsNullOrWhiteSpace(updateModel.C_CalFormula))
  253. {
  254. var calsList = JsonConvert.DeserializeObject<List<CalFormula>>(updateModel.C_CalFormula);
  255. if (calsList != null && calsList.Count > 0)
  256. {
  257. calFormulaList.AddRange(calsList);
  258. }
  259. }
  260. }
  261. if (!string.IsNullOrWhiteSpace(updateModel.MinValue) || !string.IsNullOrWhiteSpace(updateModel.MaxValue))
  262. {
  263. //content.C_CalFormula = "./wwwroot/uploads/scripts/changecolour," + viewModel.MinValue +","+ viewModel.MaxValue;
  264. Queue<string> qu = new Queue<string>();
  265. qu.Enqueue(updateModel.MinValue);
  266. qu.Enqueue(updateModel.MaxValue);
  267. calFormulaList.Add(new CalFormula { Name = "changecolour", Value = qu });
  268. //calFormulaList.Add(new CalFormula { Name = "alarmlight", Value = qu });
  269. //content.C_CalFormula = JsonHelper.GetJSON<List<CalFormula>>(calFormulaList);
  270. //content.C_CalFormula = JsonConvert.SerializeObject(calFormulaList);
  271. }
  272. if (!string.IsNullOrWhiteSpace(updateModel.FMinValue) || !string.IsNullOrWhiteSpace(updateModel.FMaxValue))
  273. {
  274. Queue<string> qu = new Queue<string>();
  275. qu.Enqueue(updateModel.FMinValue);
  276. qu.Enqueue(updateModel.FMaxValue);
  277. calFormulaList.Add(new CalFormula { Name = "minchangecolour", Value = qu });
  278. }
  279. if (!string.IsNullOrWhiteSpace(updateModel.AlarmValue))
  280. {
  281. //List<CalFormula> calFormulaList = new List<CalFormula>();
  282. Queue<string> qu = new Queue<string>();
  283. qu.Enqueue(updateModel.AlarmValue);
  284. calFormulaList.Add(new CalFormula { Name = "alarmlight", Value = qu });
  285. //content.C_CalFormula = JsonConvert.SerializeObject(calFormulaList);
  286. }
  287. if (calFormulaList.Any())
  288. content.C_CalFormula = JsonConvert.SerializeObject(calFormulaList);
  289. else
  290. content.C_CalFormula = @"[{'Name':'noformula','Value':['']}]";
  291. content.C_ControlID = "ControlID" + content.C_ID;
  292. content.C_DevSpotCode = content.C_ID;
  293. _repository.Update(content);
  294. var result = await _repository.SaveAsync();
  295. if (result)
  296. {
  297. await _devBoxRepository.DeleteBYDevStoreCode(content.C_DevCode);
  298. if (updateModel.boxCodeList!=null&& updateModel.boxCodeList.Count>0)
  299. {
  300. foreach (var item in updateModel.boxCodeList)
  301. {
  302. TDEV_DevBox devBox = new TDEV_DevBox();
  303. devBox.C_ID = Guid.NewGuid().ToString();
  304. devBox.C_BoxCode = item;
  305. devBox.C_DevStoreCode = content.C_DevCode;
  306. devBox.C_CreateBy = _claims.ApiUserId.ToString();
  307. devBox.D_CreateOn = DateTime.Now;
  308. devBox.C_Creator = _claims.ApiUserName;
  309. _devBoxRepository.Create(devBox);
  310. }
  311. var devBoxResult = await _devBoxRepository.SaveAsync();
  312. }
  313. }
  314. else
  315. {
  316. throw new Exception("更新失败");
  317. }
  318. }
  319. public async Task UpdateSortAsync(IEnumerable<string> ids)
  320. {
  321. int index = 0;
  322. foreach (var code in ids)
  323. {
  324. ++index;
  325. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  326. var content = items.FirstOrDefault();
  327. if (content == null)
  328. {
  329. continue;
  330. }
  331. content.I_Sort = index;
  332. _repository.Update(content);
  333. var result = await _repository.SaveAsync();
  334. }
  335. }
  336. public async Task<bool> devBoxIsExist(TdevWebScadaDevSpotIsExist model)
  337. {
  338. bool result = false;
  339. if (model!=null)
  340. {
  341. var items = await _repository.GetByConditionAsync(C => C.C_BoxSpot == model.C_BoxSpot && C.C_GroupName == model.C_GroupName && C.C_BoxNo == model.C_BoxNo);
  342. if (!string.IsNullOrEmpty(model.C_ID))
  343. {
  344. items = items.Where(t => t.C_ID != model.C_ID).ToList();
  345. }
  346. if (items.Count()>0&& items.FirstOrDefault()!=null)
  347. {
  348. result = true;
  349. }
  350. }
  351. return result;
  352. }
  353. public async Task<IEnumerable<DevBoxViewModel>> GetdevDevBoxConditionAsync(DevBoxSearchModel searchModel)
  354. {
  355. IEnumerable<DevBoxViewModel> list = await _devBoxRepository.GetConditionAsync(searchModel);
  356. return list;
  357. }
  358. public Task<int> UpdateOneAsync(TdevWebScadaDevSpotViewModel viewModel, params string[] fields)
  359. {
  360. throw new NotImplementedException();
  361. }
  362. public Task<bool> IsExistAsync(string id)
  363. {
  364. throw new NotImplementedException();
  365. }
  366. public Task<IEnumerable<TdevWebScadaDevSpotViewModel>> GetByConditionAsync(Expression<Func<TdevWebScadaDevSpotViewModel, bool>> expression)
  367. {
  368. throw new NotImplementedException();
  369. }
  370. public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel)
  371. {
  372. throw new NotImplementedException();
  373. }
  374. public Task<IEnumerable<TdevWebScadaDevSpotViewModel>> GetConditionAsync(TpntAreaSearchModel searchModel)
  375. {
  376. throw new NotImplementedException();
  377. }
  378. public Task CreateOneAsync(TdevWebScadaDevSpotViewModel viewModel)
  379. {
  380. throw new NotImplementedException();
  381. }
  382. }
  383. }