TdevDevStoreService.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. using AutoMapper;
  2. using Microsoft.EntityFrameworkCore;
  3. using Newtonsoft.Json;
  4. using Ropin.Core.Common;
  5. using Ropin.Inspection.Common;
  6. using Ropin.Inspection.Common.Accessor.Interface;
  7. using Ropin.Inspection.Common.Helper;
  8. using Ropin.Inspection.Model;
  9. using Ropin.Inspection.Model.Entities;
  10. using Ropin.Inspection.Repository;
  11. using Ropin.Inspection.Repository.DEV.Interface;
  12. using Ropin.Inspection.Repository.Interface;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.Linq;
  16. using System.Linq.Expressions;
  17. using System.Threading.Tasks;
  18. namespace Ropin.Inspection.Service
  19. {
  20. public class TdevDevStoreService : ITdevDevStoreService
  21. {
  22. private readonly ITdevDevStoreRepository _repository;
  23. private readonly ITdevDevStoreLogRepository _tdevDevStoreLogRepository;
  24. private readonly IMapper _mapper;
  25. private readonly IClaimsAccessor _claims;
  26. private readonly InspectionDbContext _sqlDBContext;
  27. private readonly ITmtnDevOpsRecordRepository _tmtnDevOpsRecordRepository;
  28. private readonly ITdevMaintenanceTemplateRepository _maintenanceTemplateRepository;
  29. private readonly IUnitOfWork _unitOfWork;
  30. private readonly ITdevDevStoreDocRepository _devStoreDocRepository;
  31. private readonly ITdevWebScadaDevSpotRepository _devWebScadaDevSpotRepository;
  32. private readonly Idev_DevOpeAccountConfigRepository _devOpeAccountConfigRepository;
  33. public TdevDevStoreService(ITmtnDevOpsRecordRepository tmtnDevOpsRecordRepository,IClaimsAccessor claims, InspectionDbContext sqlDBContext, ITdevDevStoreLogRepository tdevDevStoreLogRepository, ITdevDevStoreRepository repository, IMapper mapper, ITdevMaintenanceTemplateRepository maintenanceTemplateRepository, IUnitOfWork unitOfWork, ITdevDevStoreDocRepository devStoreDocRepository, ITdevWebScadaDevSpotRepository devWebScadaDevSpotRepository, Idev_DevOpeAccountConfigRepository devOpeAccountConfigRepository)
  34. {
  35. _repository = repository;
  36. _tdevDevStoreLogRepository = tdevDevStoreLogRepository;
  37. _mapper = mapper;
  38. _claims = claims;
  39. _sqlDBContext = sqlDBContext;
  40. _tmtnDevOpsRecordRepository = tmtnDevOpsRecordRepository;
  41. _maintenanceTemplateRepository = maintenanceTemplateRepository;
  42. _unitOfWork = unitOfWork;
  43. _devStoreDocRepository = devStoreDocRepository;
  44. _devWebScadaDevSpotRepository = devWebScadaDevSpotRepository;
  45. _devOpeAccountConfigRepository = devOpeAccountConfigRepository;
  46. }
  47. public async Task<TdevDevStoreDetailViewModel> GetDevStoreByQRCodeAsync(string qRCode, string storeCode)
  48. {
  49. var content = await _repository.GetDevStoreByQRCodeAsync(qRCode, storeCode);
  50. return content;
  51. }
  52. public async Task<TsysUserViewModel> GetUserByDevStoreIdAndRoleNameAsync(string devStoreId, string roleName)
  53. {
  54. var content = await _repository.GetUserByDevStoreIdAndRoleNameAsync(devStoreId, roleName);
  55. return content;
  56. }
  57. public async Task DevOperateByQRCodeAsync(DevOperateCreateModel mode)
  58. {
  59. var content = await _repository.GetByIdAsync(mode.C_DevStoreCode);
  60. if (content == null)
  61. {
  62. throw new Exception("数据库中没有此数据");
  63. }
  64. content.C_LastUpdatedBy = _claims.Linsence==null? _claims.ApiUserId:Guid.Parse("6e864cbc-5252-11ec-8681-fa163e02b3e4");
  65. content.D_LastUpdatedOn = DateTime.Now;
  66. content.C_Status = mode.C_Type;
  67. _repository.Update(content);
  68. var result = await _repository.SaveAsync();
  69. if (!result)
  70. {
  71. throw new Exception("操作失败");
  72. }
  73. //运行台账
  74. if (mode.C_Type == ((int)DevStatusEnum.Stop).ToString())
  75. {
  76. var devStoreLogSet = _sqlDBContext.GetDbSet<TDEV_DevStoreLog>().AsNoTracking();
  77. var devStoreStartLog = devStoreLogSet.Where(x => x.C_Type == ((int)DevStatusEnum.Start).ToString()).OrderByDescending(x => x.D_CreateOn).Take(1).FirstOrDefault();
  78. if (devStoreStartLog == null) goto next;
  79. var devstore_log_datas = devStoreLogSet.Where(t => t.C_DeviceCode == mode.C_DevStoreCode && t.D_CreateOn > devStoreStartLog.D_CreateOn).OrderByDescending(x => x.D_CreateOn);//.Take(5)
  80. bool isAlarm = devstore_log_datas.Where(t=>t.C_Type == ((int)DevStatusEnum.Alarm).ToString()).Any()? true:false;
  81. var devOpeAccountS = _sqlDBContext.GetDbSet<TDEV_DevOpeAccount>();
  82. //读取特性,属性名
  83. //PropertyInfo[] peroperties = typeof(TdevDevOpeContentViewModel).GetProperties(BindingFlags.Public | BindingFlags.Instance);
  84. //foreach (PropertyInfo property in peroperties)
  85. //{
  86. // object[] objs = property.GetCustomAttributes(typeof(DescriptionAttribute), true);
  87. // if (objs.Length > 0)
  88. // {
  89. // Console.WriteLine("{0}: {1}", property.Name, ((DescriptionAttribute)objs[0]).Description);
  90. // }
  91. //}
  92. //var result = await FanyiHelper.GetWebScadaDevSpotValue(boxno, storeCode, names, unitNames, groupnames, calFormula, _nodeServices, calFormulaList);
  93. var devStore = await GetConditionAsync(new TdevDevStoreSearchModel { C_ID = mode.C_DevStoreCode });
  94. TdevDevStoreRunSpotConfigViewModel runSpotConfig = JsonConvert.DeserializeObject<TdevDevStoreRunSpotConfigViewModel>(devStore.FirstOrDefault().C_RunSpotConfig);
  95. var devSpotGroupNames = runSpotConfig?.RunSpotConfigList?.Where(x=>x.BReadDevSpot == true).Select(y=>y.DevSpotGroupName).ToList();
  96. var devSpotNames = runSpotConfig?.RunSpotConfigList?.Where(x => x.BReadDevSpot == true).Select(y => y.DevSpotName).ToList();
  97. var devSpotBoxNos = runSpotConfig?.RunSpotConfigList?.Where(x => x.BReadDevSpot ==true).Select(y => y.DevSpotBoxNo).ToList();
  98. //if(devSpotBoxNos.Any())
  99. var devSpotValues = await FanyiHelper.GetDevSpotValue(devSpotBoxNos.FirstOrDefault(), devSpotNames, devSpotGroupNames);
  100. var solidWasteRecordItems = await _tmtnDevOpsRecordRepository.GetRecordsConditionAsync(new TmtnDevOpsRecordDetailSearchModel { bSolidWaste = true, C_DevStoreCode = mode.C_DevStoreCode, IsPagination = false, Start = devStoreStartLog.D_CreateOn ,End = DateTime.Now});
  101. List<SolidWaste> DevOpsRecordSolidWaste = new List<SolidWaste>();
  102. if(solidWasteRecordItems.Any()&& solidWasteRecordItems.FirstOrDefault()!=null)
  103. foreach (var item in solidWasteRecordItems.ToList())
  104. {
  105. if (item.C_Status == "7")
  106. {
  107. if (!string.IsNullOrWhiteSpace(item.C_SolidWaste))
  108. DevOpsRecordSolidWaste.Add(JsonConvert.DeserializeObject<SolidWaste>(item.C_SolidWaste));
  109. }
  110. }
  111. //DevOpsRecordSolidWaste.ForEach(x => {
  112. // if (x.RoleName.Contains("设备管理员"))
  113. // vm.DevManager += x.C_Name + " " + x.C_Mobile + " ";
  114. // if (x.RoleName.Contains("设备运维员"))
  115. // vm.DevOpser += x.C_Name + " " + x.C_Mobile + " ";
  116. //});
  117. TdevDevOpeContentViewModel devOpeContent = new TdevDevOpeContentViewModel
  118. {
  119. Date = DateTime.Now,//.ToString("yyyy-MM-dd HH:mm:ss.fff")
  120. DrainOutletNumber = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "DrainOutletNumber").FirstOrDefault().Value,
  121. DevStoreName = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "DevStoreName").FirstOrDefault().Value,
  122. DevStoreType = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "DevStoreType").FirstOrDefault().Value,
  123. SpecificationsParameterName = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "SpecificationsParameterName").FirstOrDefault().Value,
  124. SpecificationsDesignValue = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "SpecificationsDesignValue").FirstOrDefault().Value,
  125. SpecificationsUnit = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "SpecificationsUnit").FirstOrDefault().Value,
  126. RunStartTime = devStoreStartLog.D_CreateOn,
  127. RunEndTime = DateTime.Now,
  128. RunWhetherNormal = isAlarm,
  129. FlueGasVolume = devSpotValues?.Where(x => x.name == devSpotNames.FirstOrDefault()).FirstOrDefault()?.value.ToString(),
  130. //FlueGasVolumeid
  131. PollutionFactor = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "PollutionFactor").FirstOrDefault().Value,
  132. GovernanceEfficiency = devSpotValues?.Where(x => x.name == devSpotNames.ElementAtOrDefault(1)).FirstOrDefault()?.value.ToString(),
  133. DataSources = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "DataSources").FirstOrDefault().Value,
  134. HeightOfFlue = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "HeightOfFlue").FirstOrDefault().Value,
  135. DischargeTemperature = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "DischargeTemperature").FirstOrDefault().Value,
  136. Pressure = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "Pressure").FirstOrDefault().Value,
  137. DischargeTime = (DateTime.Now - devStoreStartLog.D_CreateOn).TotalHours.ToString("F2"),
  138. ConsumablePowerConsumption = runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "ConsumablePowerConsumption").FirstOrDefault().Value,
  139. ConsumableName = DevOpsRecordSolidWaste.Any()? string.Join(",", DevOpsRecordSolidWaste.Select(x => x.NameSpecification).ToList().ToArray()):"/"
  140. , // runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "ConsumableName").FirstOrDefault().Value,
  141. ConsumableReplacementQuantity = DevOpsRecordSolidWaste.Any() ? string.Join(",", DevOpsRecordSolidWaste.Select(x => x.SpecificationNumber).ToList().ToArray()) : "/",//runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "ConsumableReplacementQuantity").FirstOrDefault().Value,
  142. WasteName = DevOpsRecordSolidWaste.Any() ? string.Join(",", DevOpsRecordSolidWaste.Select(x => x.SolidWasteUnit).ToList().ToArray()) : "/",
  143. //runSpotConfig?.RunSpotConfigList?.Where(x=>x.Name == "WasteName").FirstOrDefault().Value,
  144. WasteProduction = DevOpsRecordSolidWaste.Any() ? string.Join(",", DevOpsRecordSolidWaste.Select(x => x.SolidWasteNumber).ToList().ToArray()) : "/",
  145. //runSpotConfig?.RunSpotConfigList?.Where(x => x.Name == "WasteProduction").FirstOrDefault().Value,
  146. //C_Content = "",
  147. //C_Remark = "",
  148. //C_CreateBy = _claims.ApiUserId,
  149. //D_CreateOn = DateTime.Now
  150. };
  151. await devOpeAccountS.AddRangeAsync(new TDEV_DevOpeAccount {
  152. C_ID = Guid.NewGuid().ToString(),
  153. C_DevStoreCode = mode.C_DevStoreCode,
  154. C_Content = JsonConvert.SerializeObject(devOpeContent),
  155. C_Remark ="",
  156. C_CreateBy = _claims.Linsence == null ? _claims.ApiUserId : Guid.Parse("6e864cbc-5252-11ec-8681-fa163e02b3e4"),
  157. D_CreateOn = DateTime.Now
  158. });
  159. var qty = await _sqlDBContext.SaveChangesAsync();
  160. }
  161. next:
  162. await _tdevDevStoreLogRepository.CreateOneAsync(new TDEV_DevStoreLog {
  163. C_ID = Guid.NewGuid().ToString(),
  164. C_DeviceCode = mode.C_DevStoreCode,
  165. C_LogMsg = mode.C_LogMsg,
  166. C_Type = mode.C_Type,
  167. C_CreateBy = _claims.Linsence == null ? _claims.ApiUserId : Guid.Parse("6e864cbc-5252-11ec-8681-fa163e02b3e4"),
  168. D_CreateOn = DateTime.Now
  169. });
  170. result = await _tdevDevStoreLogRepository.SaveAsync();
  171. if (!result)
  172. {
  173. throw new Exception("操作失败");
  174. }
  175. }
  176. public async Task CreateOneAsync(TdevDevStoreViewModel viewModel)
  177. {
  178. var id = Guid.NewGuid().ToString();
  179. var path = QRCoderHelper.RenderQrCode(id, "M", _claims.Linsence);
  180. var content = _mapper.Map<TDEV_DevStore>(viewModel);
  181. content.C_ID = id;
  182. content.C_CreateBy = _claims.ApiUserId;
  183. content.D_CreateOn = DateTime.Now;
  184. content.C_Status = "1";
  185. content.C_DevQRUrl = path;
  186. _repository.Create(content);
  187. var result = await _repository.SaveAsync();
  188. if (!result)
  189. {
  190. throw new Exception("创建失败");
  191. }
  192. }
  193. public async Task CopyCreateOneAsync(string oldId)
  194. {
  195. TDEV_DevStore content = await _repository.GetByIdAsync(oldId);
  196. if (content==null)
  197. {
  198. throw new Exception("没有此数据");
  199. }
  200. bool result = false;
  201. _unitOfWork.BeginTransaction();
  202. try
  203. {
  204. string newId = Guid.NewGuid().ToString();
  205. var path = QRCoderHelper.RenderQrCode(newId, "M", _claims.Linsence);
  206. //var content = _mapper.Map<TDEV_DevStore>(viewModel);
  207. content.C_ID = newId;
  208. content.C_Name = content.C_Name + "-拷贝";
  209. content.C_CreateBy = _claims.ApiUserId;
  210. content.D_CreateOn = DateTime.Now;
  211. content.C_Status = "1";
  212. content.C_DevQRUrl = path;
  213. content.C_LastUpdatedBy = null;
  214. content.D_LastUpdatedOn = null;
  215. result = await _unitOfWork.RegisterNew(content);
  216. if (result)
  217. {
  218. TDEV_DevOpeAccountConfig cofMode = new TDEV_DevOpeAccountConfig();
  219. var DevOpeAccountConfigMode = await _devOpeAccountConfigRepository.GetByConditionAsync(t => t.C_DevStoreCode == oldId);
  220. if (DevOpeAccountConfigMode!=null&&DevOpeAccountConfigMode.Count()>0)
  221. {
  222. var cofEntity = DevOpeAccountConfigMode?.OrderByDescending(t => t.D_CreateOn).FirstOrDefault();
  223. if (cofEntity!=null)
  224. {
  225. cofMode.C_ID = Guid.NewGuid().ToString();
  226. cofMode.C_DevStoreCode = content.C_ID;
  227. cofMode.C_Config = cofEntity.C_Config;
  228. cofMode.C_Remark= content.C_Remark;
  229. cofMode.C_CreateBy = _claims.ApiUserId;
  230. cofMode.D_CreateOn= DateTime.Now;
  231. result = await _unitOfWork.RegisterNew(cofMode);
  232. }
  233. }
  234. var WebScadaDevSpot= await _devWebScadaDevSpotRepository.GetByConditionAsync(t => t.C_DevCode == oldId);
  235. List<TDEV_WebScadaDevSpot> webList = new List<TDEV_WebScadaDevSpot>();
  236. foreach (var item in WebScadaDevSpot)
  237. {
  238. if (item!=null)
  239. {
  240. TDEV_WebScadaDevSpot tDEV_Web = new TDEV_WebScadaDevSpot();
  241. tDEV_Web = item;
  242. tDEV_Web.C_ID = Guid.NewGuid().ToString();
  243. tDEV_Web.C_Name = item.C_Name;
  244. tDEV_Web.C_ControlID=item.C_ControlID;
  245. tDEV_Web.C_DevCode = content.C_ID;
  246. tDEV_Web.C_LastUpdatedBy = null;
  247. tDEV_Web.D_LastUpdatedOn = null;
  248. tDEV_Web.C_CreateBy = _claims.ApiUserId;
  249. tDEV_Web.D_CreateOn = DateTime.Now;
  250. webList.Add(tDEV_Web);
  251. }
  252. }
  253. if (webList!=null&& webList.Count>0)
  254. {
  255. result = await _unitOfWork.RegisterRangeNew(webList.ToList());
  256. }
  257. var doc = await _devStoreDocRepository.GetByConditionAsync(t => t.C_DevStoreCode == oldId);
  258. List<TDEV_DevStoreDoc> docList = new List<TDEV_DevStoreDoc>();
  259. foreach (var item in doc)
  260. {
  261. if (item != null)
  262. {
  263. item.C_ID = Guid.NewGuid().ToString();
  264. item.C_DevStoreCode = content.C_ID;
  265. item.C_LastUpdatedBy = null;
  266. item.D_LastUpdatedOn = null;
  267. item.C_CreateBy = _claims.ApiUserId;
  268. item.D_CreateOn = DateTime.Now;
  269. docList.Add(item);
  270. }
  271. }
  272. if (docList!=null&& docList.Count>0)
  273. {
  274. result = await _unitOfWork.RegisterRangeNew(docList.ToList());
  275. }
  276. }
  277. }
  278. catch
  279. {
  280. result = false;
  281. throw;
  282. }
  283. finally
  284. {
  285. if (result)
  286. await _unitOfWork.CommitAsync();
  287. else
  288. _unitOfWork.Rollback();
  289. }
  290. }
  291. public async Task<string> GetDevStoreQRCodeAsync(string devStore)
  292. {
  293. var path = QRCoderHelper.RenderQrCode(devStore, "M", _claims.Linsence);
  294. var content = await _repository.GetByIdAsync(devStore);
  295. if (content == null)
  296. {
  297. throw new Exception("没有此数据");
  298. }
  299. content.C_LastUpdatedBy = _claims.ApiUserId;
  300. content.D_LastUpdatedOn = DateTime.Now;
  301. content.C_DevQRUrl = path;
  302. _repository.Update(content);
  303. var result = await _repository.SaveAsync();
  304. if (!result)
  305. {
  306. throw new Exception("更新失败");
  307. }
  308. return await Task.FromResult(path);
  309. }
  310. public async Task DeleteAsync(string id)
  311. {
  312. var content = await _repository.GetByIdAsync(id);
  313. if (content == null)
  314. {
  315. throw new Exception("数据库中没有此数据");
  316. }
  317. //_repository.Delete(content);
  318. //var result = await _repository.SaveAsync();
  319. content.C_LastUpdatedBy = _claims.ApiUserId;
  320. content.D_LastUpdatedOn = DateTime.Now;
  321. content.C_Status = "0";
  322. _repository.Update(content);
  323. var result = await _repository.SaveAsync();
  324. if (!result)
  325. {
  326. throw new Exception("删除失败");
  327. }
  328. }
  329. public async Task DeleteByConditionAsync(string code)
  330. {
  331. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  332. var content = items.FirstOrDefault();
  333. if (content == null)
  334. {
  335. throw new Exception("没有此数据");
  336. }
  337. content.C_LastUpdatedBy = _claims.ApiUserId;
  338. content.D_LastUpdatedOn = DateTime.Now;
  339. content.C_Status = "0";
  340. _repository.Update(content);
  341. var result = await _repository.SaveAsync();
  342. if (!result)
  343. {
  344. throw new Exception("删除失败");
  345. }
  346. }
  347. public async Task<IEnumerable<TdevDevStoreViewModel>> GetAllAsync()
  348. {
  349. var pagedList = await _repository.GetAllAsync();
  350. var contentDtoList = _mapper.Map<IEnumerable<TdevDevStoreViewModel>>(pagedList.Where(i => i.C_Status == "1").ToList());
  351. return contentDtoList.ToList();
  352. }
  353. public async Task<IEnumerable<TdevDevStoreViewModel>> GetConditionAsync(TdevDevStoreSearchModel searchModel)
  354. {
  355. IEnumerable<TdevDevStoreViewModel> list = await _repository.GetConditionAsync(searchModel, _claims?.LicenseTypeCode, _claims?.ApiUserId.ToString());
  356. searchModel.TotalCount = list.ToList().Count;
  357. return list;
  358. }
  359. public async Task<IEnumerable<DevStoreStatusGroup>> GetDevStoreStatusCount(TdevDevStoreSearchModel searchModel)
  360. {
  361. return await _repository.GetDevStoreStatusCount(searchModel, _claims?.LicenseTypeCode, _claims?.ApiUserId.ToString());
  362. }
  363. public async Task<TdevDevStoreViewModel> GetByIdAsync(string id)
  364. {
  365. var content = await _repository.GetByIdAsync(id);
  366. var contentDto = _mapper.Map<TdevDevStoreViewModel>(content);
  367. return contentDto;
  368. }
  369. public async Task UpdateAsync(string code, TdevDevStoreUpdateModel updateModel)
  370. {
  371. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  372. var content = items.FirstOrDefault();
  373. if (content == null)
  374. {
  375. throw new Exception("没有此数据");
  376. }
  377. List<string> MTCodes = new List<string>
  378. {
  379. updateModel.C_OpsTempCode,
  380. updateModel.C_RepairTempCode,
  381. updateModel.C_RunTempCode
  382. };
  383. //验证模板是否禁用
  384. var templates = await _maintenanceTemplateRepository.GetByConditionAsync(x => MTCodes.Contains(x.C_ID));
  385. foreach (var template in templates)
  386. {
  387. if (template.C_Status == "0")
  388. {
  389. throw new Exception("存在已禁用的模板");
  390. }
  391. }
  392. content.C_LastUpdatedBy = _claims.Linsence == null ? _claims.ApiUserId : Guid.Parse("6e864cbc-5252-11ec-8681-fa163e02b3e4");
  393. content.D_LastUpdatedOn = DateTime.Now;
  394. _mapper.Map(updateModel, content, typeof(TdevDevStoreUpdateModel), typeof(TDEV_DevStore));
  395. _repository.Update(content);
  396. var result = await _repository.SaveAsync();
  397. if (!result)
  398. {
  399. throw new Exception("更新失败");
  400. }
  401. }
  402. //保存运行台账配置
  403. public async Task UpdateDevStoreRunSpotConfigAsync(string code, TdevDevStoreRunSpotConfigViewModel updateModel)
  404. {
  405. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  406. var content = items.FirstOrDefault();
  407. if (content == null)
  408. {
  409. throw new Exception("没有此数据");
  410. }
  411. bool result = false;
  412. _unitOfWork.BeginTransaction();
  413. try
  414. {
  415. TDEV_DevOpeAccountConfig config = new TDEV_DevOpeAccountConfig();
  416. config.C_ID = Guid.NewGuid().ToString();
  417. config.C_DevStoreCode = code;
  418. config.C_Config = JsonConvert.SerializeObject(updateModel);
  419. config.C_CreateBy = _claims.ApiUserId;
  420. config.D_CreateOn = DateTime.Now;
  421. result = await _unitOfWork.RegisterNew(config);
  422. if (!result)
  423. {
  424. throw new Exception("更新失败");
  425. }
  426. else
  427. {
  428. content.C_LastUpdatedBy = _claims.ApiUserId;
  429. content.D_LastUpdatedOn = DateTime.Now;
  430. content.C_RunSpotConfig = JsonConvert.SerializeObject(updateModel);
  431. _repository.Update(content);
  432. result = await _repository.SaveAsync();
  433. }
  434. }
  435. catch
  436. {
  437. _unitOfWork.Rollback();
  438. throw;
  439. }
  440. finally
  441. {
  442. if (result)
  443. await _unitOfWork.CommitAsync();
  444. else
  445. _unitOfWork.Rollback();
  446. }
  447. }
  448. public async Task UpdateDevStoreUserConfigAsync(string code, TdevDevStoreUserConfigViewModel updateModel)
  449. {
  450. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  451. var content = items.FirstOrDefault();
  452. if (content == null)
  453. {
  454. throw new Exception("没有此数据");
  455. }
  456. content.C_LastUpdatedBy = _claims.ApiUserId;
  457. content.D_LastUpdatedOn = DateTime.Now;
  458. content.C_UserConfig = JsonConvert.SerializeObject(updateModel.UserConfigList);
  459. _repository.Update(content);
  460. var result = await _repository.SaveAsync();
  461. if (!result)
  462. {
  463. throw new Exception("更新失败");
  464. }
  465. }
  466. public Task<int> UpdateOneAsync(TdevDevStoreViewModel viewModel, params string[] fields)
  467. {
  468. throw new NotImplementedException();
  469. }
  470. public Task<bool> IsExistAsync(string id)
  471. {
  472. throw new NotImplementedException();
  473. }
  474. public Task<IEnumerable<TdevDevStoreViewModel>> GetByConditionAsync(Expression<Func<TdevDevStoreViewModel, bool>> expression)
  475. {
  476. throw new NotImplementedException();
  477. }
  478. public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel)
  479. {
  480. throw new NotImplementedException();
  481. }
  482. public Task<IEnumerable<TdevDevStoreViewModel>> GetConditionAsync(TpntAreaSearchModel searchModel)
  483. {
  484. throw new NotImplementedException();
  485. }
  486. }
  487. }