EquipmentService.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using FMSAdmin.Data;
  5. using FMSAdmin.Helpers;
  6. using FMSAdmin.Entities;
  7. using Microsoft.Extensions.Logging;
  8. using FMSAdmin.Models;
  9. namespace FMSAdmin.Services {
  10. public class EquipmentService {
  11. private readonly ILogger<EquipmentService> _logger;
  12. private readonly FMSContext _context;
  13. private readonly StorageHelper _storage;
  14. public EquipmentService(
  15. ILogger<EquipmentService> logger,
  16. FMSContext context,
  17. StorageHelper storage) {
  18. _logger = logger;
  19. _context = context;
  20. _storage = storage;
  21. }
  22. public void ImportExcel(IList<FmsEquipment> list) {
  23. using (var transaction = _context.Database.BeginTransaction()) {
  24. foreach (var data in list) {
  25. data.FmsEquipmentHistory.Add(AddHistory(data));
  26. }
  27. _context.FmsEquipment.AddRange(list);
  28. _context.SaveChanges();
  29. if (!_context.SiteConfig.Single().UseEquipmentRent) {
  30. foreach (var data in list) {
  31. AddRentInfo(data);
  32. }
  33. }
  34. transaction.Commit();
  35. }
  36. }
  37. public void Create(FmsEquipment data) {
  38. using (var transaction = _context.Database.BeginTransaction()) {
  39. checkName(data);
  40. if (data.ImageFile != null && data.ImageFile.IsUpload) {
  41. data.ImageFile.SiteId = data.SiteId;
  42. var category = _context.CmFileCategory.First(x => x.Name == "equipment");
  43. data.ImageFile.FileCategory = category;
  44. data.ImageFile.CreatedDate = DateTime.Now;
  45. } else {
  46. data.ImageFile = null;
  47. }
  48. data.FmsEquipmentHistory.Add(AddHistory(data));
  49. data.AddDate = DateTime.Now;
  50. data.UpdateDate = DateTime.Now;
  51. _context.FmsEquipment.Add(data);
  52. _context.SaveChanges();
  53. if (data.ImageFile != null && data.ImageFile.IsUpload) {
  54. // 카피
  55. _storage.CopyEntity(data.ImageFile.Path, data.ImageFile);
  56. }
  57. // 대여 미사용시 데이터 생성
  58. if (!_context.SiteConfig.Single().UseEquipmentRent) {
  59. AddRentInfo(data);
  60. }
  61. transaction.Commit();
  62. }
  63. }
  64. public void Edit(int id, int siteId, FmsEquipment data) {
  65. using (var transaction = _context.Database.BeginTransaction()) {
  66. if (data.ImageFile != null && data.ImageFile.IsUpload) {
  67. data.ImageFile.SiteId = data.SiteId;
  68. var category = _context.CmFileCategory.First(x => x.Name == "equipment");
  69. data.ImageFile.FileCategory = category;
  70. data.ImageFile.CreatedDate = DateTime.Now;
  71. }
  72. var persist = _context.FmsEquipment
  73. .Where(x => x.EquipmentId == id && x.SiteId == siteId).FirstOrDefault();
  74. if (persist == null) {
  75. throw new ServiceException("정보를 찾을 수 없습니다.");
  76. }
  77. if (!persist.EquipmentTypeId.Equals(data.EquipmentTypeId)) {
  78. checkName(data);
  79. }
  80. if (!persist.Name.Equals(data.Name)) {
  81. checkName(data);
  82. }
  83. if (!Util.IsNullOrEmpty(data.Standard)) {
  84. if (!persist.Standard.Equals(data.Standard))
  85. checkName(data);
  86. }
  87. persist.SiteId = data.SiteId;
  88. persist.Name = data.Name;
  89. persist.EquipmentTypeId = data.EquipmentTypeId;
  90. persist.Standard = data.Standard;
  91. persist.Unit = data.Unit;
  92. persist.WarehouseId = data.WarehouseId;
  93. persist.SupplierName = data.SupplierName;
  94. persist.SupplierPhoneNo = data.SupplierPhoneNo;
  95. persist.UpdateDate = DateTime.Now;
  96. if (data.ImageFile != null && data.ImageFile.IsUpload) {
  97. persist.ImageFile = data.ImageFile;
  98. }
  99. _context.FmsEquipment.Update(persist);
  100. _context.SaveChanges();
  101. if (data.ImageFile != null && data.ImageFile.IsUpload) {
  102. // 카피
  103. _storage.CopyEntity(data.ImageFile.Path, persist.ImageFile);
  104. if (persist.ImageFile != null) {
  105. // 파일 삭제시 진짜 DB삭제?
  106. }
  107. }
  108. transaction.Commit();
  109. }
  110. }
  111. public int checkName(FmsEquipment data, bool isExcel = false) {
  112. var check = _context.FmsEquipment.Where(x => x.SiteId == data.SiteId && x.EquipmentTypeId == data.EquipmentTypeId && x.Name == data.Name && x.Standard == data.Standard).Count();
  113. if (!isExcel && check > 0) {
  114. throw new ServiceException("동일 정보가 존재합니다. [공기구분류-공기구명-규격]");
  115. }
  116. return check;
  117. }
  118. public FmsEquipmentHistory AddHistory(FmsEquipment data) {
  119. var history = new FmsEquipmentHistory {
  120. EquipmentStateTypeId = 1,
  121. StoredCount = data.StoredCount,
  122. TotalStockCount = data.StoredCount,
  123. CurrentStockCount = data.StoredCount,
  124. ReturnCount = 0,
  125. AddDate = DateTime.Now,
  126. UpdateDate = DateTime.Now,
  127. IsReturnApproval = false
  128. };
  129. return history;
  130. }
  131. public void AddRentInfo(FmsEquipment data) {
  132. var rentInfo = new FmsEquipmentRentInfo {
  133. SiteId = data.SiteId,
  134. RegisterUserId = data.RegisterUserId,
  135. RentUserId = data.RegisterUserId,
  136. RentDate = DateTime.Now,
  137. EquipmentStateTypeId = 2,
  138. Comment = "입고",
  139. Title = "입고",
  140. };
  141. var rentHistory = new FmsEquipmentHistory {
  142. EquipmentId = data.EquipmentId,
  143. SiteId = data.SiteId,
  144. TotalStockCount = data.StoredCount,
  145. CurrentStockCount = 0,
  146. RentCount = data.StoredCount,
  147. CurrentRentCount = data.StoredCount,
  148. ReturnCount = 0,
  149. LossCount = 0,
  150. StoredCount = 0,
  151. EquipmentStateTypeId = 2,
  152. IsReturned = false,
  153. AddDate = DateTime.Now,
  154. UpdateDate = DateTime.Now,
  155. IsReturnApproval = false
  156. };
  157. rentInfo.FmsEquipmentHistory.Add(rentHistory);
  158. _context.FmsEquipmentRentInfo.Add(rentInfo);
  159. _context.SaveChanges();
  160. }
  161. public IQueryable<FmsEquipment> GetAll() {
  162. var query = from p in _context.FmsEquipment
  163. select p;
  164. return query;
  165. }
  166. public FmsEquipment Get(int id, int siteId) {
  167. var data = _context.FmsEquipment.Single(x => x.EquipmentId == id && x.SiteId == siteId);
  168. return data;
  169. }
  170. public IQueryable<FmsEquipment> Gets(int id, int siteId) {
  171. var data = _context.FmsEquipment.Where(x => x.EquipmentId == id && x.SiteId == siteId);
  172. return data;
  173. }
  174. public void Delete(int id, int siteId) {
  175. using (var transaction = _context.Database.BeginTransaction()) {
  176. var history = _context.FmsEquipmentHistory.Where(x => x.EquipmentId == id && x.SiteId == siteId);
  177. _context.FmsEquipmentHistory.RemoveRange(history);
  178. _context.SaveChanges();
  179. var data = _context.FmsEquipment.First(x => x.EquipmentId == id && x.SiteId == siteId);
  180. _context.FmsEquipment.Remove(data);
  181. _context.SaveChanges();
  182. transaction.Commit();
  183. }
  184. }
  185. public IQueryable<FmsEquipmentHistory> GetHistory() {
  186. var query = _context.FmsEquipmentHistory;
  187. return query;
  188. }
  189. }
  190. }