Mapping.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. using SWRIS.Dtos;
  2. using SWRIS.Enums;
  3. using SWRIS.Models;
  4. using SWRIS.Models.Data;
  5. using SWRIS.Models.ViewModel;
  6. using System.Collections.Generic;
  7. using System.Collections.ObjectModel;
  8. using System.Linq;
  9. namespace SWRIS
  10. {
  11. public static class Mapping
  12. {
  13. public static void ToEquipmentModel(this EquipmentSettingViewModel equipmentSettingViewModel, EquipmentModel equipmentModel)
  14. {
  15. if (equipmentSettingViewModel == null || equipmentModel == null)
  16. return;
  17. // 赋值基本属性
  18. equipmentModel.RopeNumber = equipmentSettingViewModel.RopeNumber;
  19. equipmentModel.RopeName = equipmentSettingViewModel.RopeName;
  20. equipmentModel.TrolleyId = equipmentSettingViewModel.TrolleyId;
  21. equipmentModel.IpAddress = equipmentSettingViewModel.IpAddress;
  22. equipmentModel.SerialNo = equipmentSettingViewModel.SerialNo;
  23. equipmentModel.Supplier = equipmentSettingViewModel.Supplier;
  24. equipmentModel.LayType = (LayType)equipmentSettingViewModel.LayType;
  25. equipmentModel.HoistDrumDiameter = equipmentSettingViewModel.HoistDrumDiameter;
  26. equipmentModel.EncoderResolution = equipmentSettingViewModel.EncoderResolution;
  27. equipmentModel.LiftHightRatio = equipmentSettingViewModel.LiftHightRatio;
  28. equipmentModel.RatedHeight = equipmentSettingViewModel.RatedHeight;
  29. equipmentModel.SoundRiskLevel = equipmentSettingViewModel.SoundRiskLevel;
  30. equipmentModel.WireMaterialType = (WireMaterialType)equipmentSettingViewModel.WireMaterialType;
  31. equipmentModel.WireSurfaceType = (WireSurfaceType)equipmentSettingViewModel.WireSurfaceType;
  32. equipmentModel.RopeCoreType = (RopeCoreType)equipmentSettingViewModel.RopeCoreType;
  33. equipmentModel.DisableAlarm = equipmentSettingViewModel.DisableAlarm;
  34. equipmentModel.InUseSensor = equipmentSettingViewModel.InUseSensor;
  35. // 如果源Parameter为null,确保目标Parameter不为null
  36. if (equipmentSettingViewModel.Parameter == null)
  37. {
  38. equipmentModel.Parameter = new ParameterModel();
  39. return;
  40. }
  41. // 如果目标Parameter为Null,创建新实例
  42. if (equipmentModel.Parameter == null)
  43. {
  44. equipmentModel.Parameter = new ParameterModel();
  45. }
  46. // 赋值Parameter属性
  47. var sourceParam = equipmentSettingViewModel.Parameter;
  48. var targetParam = equipmentModel.Parameter;
  49. targetParam.SensorCount = sourceParam.SensorCount;
  50. targetParam.SamplingStep = sourceParam.SamplingStep;
  51. targetParam.MainBoardSoftwareVersion = sourceParam.MainBoardSoftwareVersion;
  52. targetParam.FrequencyDivisionFactor = sourceParam.FrequencyDivisionFactor;
  53. targetParam.DamageInterval = sourceParam.DamageInterval;
  54. targetParam.DamageThreshold = sourceParam.DamageThreshold;
  55. targetParam.ScrapUpperLimit = sourceParam.ScrapUpperLimit;
  56. targetParam.BackMagnetLength = sourceParam.BackMagnetLength;
  57. targetParam.ValueCoefficient = sourceParam.ValueCoefficient;
  58. targetParam.FrontMagnetLength = sourceParam.FrontMagnetLength;
  59. targetParam.EffectiveStrokeLength = sourceParam.EffectiveStrokeLength;
  60. targetParam.ZeroPositionCorrectionOffset = sourceParam.ZeroPositionCorrectionOffset;
  61. targetParam.SoundLightAlarmAutoResetMode = sourceParam.SoundLightAlarmAutoResetMode;
  62. targetParam.ZeroPositionCorrectionDuration = sourceParam.ZeroPositionCorrectionDuration;
  63. targetParam.SystemTime = sourceParam.SystemTime;
  64. targetParam.AlarmValue = sourceParam.AlarmValue;
  65. targetParam.TwistFactor = sourceParam.TwistFactor;
  66. targetParam.WarningValue = sourceParam.WarningValue;
  67. targetParam.WireRopeType = sourceParam.WireRopeType;
  68. targetParam.WireRopeCount = sourceParam.WireRopeCount;
  69. targetParam.WireRopeLength = sourceParam.WireRopeLength;
  70. targetParam.WireRopeDiameter = sourceParam.WireRopeDiameter;
  71. targetParam.EncoderDirection = sourceParam.EncoderDirection;
  72. targetParam.WireRopeStrandCount = sourceParam.WireRopeStrandCount;
  73. targetParam.WireRopeStrandWireCount = sourceParam.WireRopeStrandWireCount;
  74. targetParam.FirstCalibrationPositiont = sourceParam.FirstCalibrationPositiont;
  75. targetParam.SecondCalibrationPositiont = sourceParam.SecondCalibrationPositiont;
  76. }
  77. // 可选:创建新实例的扩展方法
  78. public static EquipmentModel ToEquipmentModel(this EquipmentSettingViewModel equipmentSettingViewModel)
  79. {
  80. var equipmentModel = new EquipmentModel();
  81. equipmentSettingViewModel.ToEquipmentModel(equipmentModel);
  82. return equipmentModel;
  83. }
  84. public static EquipmentSettingViewModel ToEquipmentSettingViewModel(this EquipmentModel equipmentModel, RunningStatus runningStatus)
  85. {
  86. var equipmentSettingViewModel = new EquipmentSettingViewModel();
  87. equipmentModel.ToEquipmentSettingViewModel(equipmentSettingViewModel, runningStatus);
  88. return equipmentSettingViewModel;
  89. }
  90. public static void ToEquipmentSettingViewModel(this EquipmentModel equipmentModel, EquipmentSettingViewModel equipmentSettingViewModel, RunningStatus runningStatus)
  91. {
  92. if (equipmentModel == null || equipmentSettingViewModel == null)
  93. return;
  94. // 赋值基本属性
  95. equipmentSettingViewModel.RopeNumber = equipmentModel.RopeNumber;
  96. equipmentSettingViewModel.RopeName = equipmentModel.RopeName;
  97. equipmentSettingViewModel.TrolleyId = equipmentModel.TrolleyId;
  98. equipmentSettingViewModel.IpAddress = equipmentModel.IpAddress;
  99. equipmentSettingViewModel.SerialNo = equipmentModel.SerialNo;
  100. equipmentSettingViewModel.Supplier = equipmentModel.Supplier;
  101. equipmentSettingViewModel.RunningStatus = runningStatus;
  102. equipmentSettingViewModel.LayType = (int)equipmentModel.LayType;
  103. equipmentSettingViewModel.LiftHightRatio = equipmentModel.LiftHightRatio;
  104. equipmentSettingViewModel.HoistDrumDiameter = equipmentModel.HoistDrumDiameter;
  105. equipmentSettingViewModel.EncoderResolution = equipmentModel.EncoderResolution;
  106. equipmentSettingViewModel.RatedHeight = equipmentModel.RatedHeight;
  107. equipmentSettingViewModel.SoundRiskLevel = equipmentModel.SoundRiskLevel;
  108. equipmentSettingViewModel.WireMaterialType = (int)equipmentModel.WireMaterialType;
  109. equipmentSettingViewModel.WireSurfaceType = (int)equipmentModel.WireSurfaceType;
  110. equipmentSettingViewModel.RopeCoreType = (int)equipmentModel.RopeCoreType;
  111. equipmentSettingViewModel.DisableAlarm = equipmentModel.DisableAlarm;
  112. equipmentSettingViewModel.InUseSensor = equipmentModel.InUseSensor;
  113. // 如果源Parameter为null,确保目标Parameter不为null
  114. if (equipmentModel.Parameter == null)
  115. {
  116. equipmentSettingViewModel.Parameter = new ParameterData();
  117. return;
  118. }
  119. // 如果目标Parameter为null,创建新实例
  120. if (equipmentSettingViewModel.Parameter == null)
  121. {
  122. equipmentSettingViewModel.Parameter = new ParameterData();
  123. }
  124. // 赋值Parameter属性
  125. var sourceParam = equipmentModel.Parameter;
  126. var targetParam = equipmentSettingViewModel.Parameter;
  127. targetParam.MainBoardSoftwareVersion = sourceParam.MainBoardSoftwareVersion;
  128. targetParam.SensorCount = sourceParam.SensorCount;
  129. targetParam.SamplingStep = sourceParam.SamplingStep;
  130. targetParam.FrequencyDivisionFactor = sourceParam.FrequencyDivisionFactor;
  131. targetParam.DamageInterval = sourceParam.DamageInterval;
  132. targetParam.DamageThreshold = sourceParam.DamageThreshold;
  133. targetParam.ScrapUpperLimit = sourceParam.ScrapUpperLimit;
  134. targetParam.FrontMagnetLength = sourceParam.FrontMagnetLength;
  135. targetParam.BackMagnetLength = sourceParam.BackMagnetLength;
  136. targetParam.ValueCoefficient = sourceParam.ValueCoefficient;
  137. targetParam.EffectiveStrokeLength = sourceParam.EffectiveStrokeLength;
  138. targetParam.ZeroPositionCorrectionDuration = sourceParam.ZeroPositionCorrectionDuration;
  139. targetParam.ZeroPositionCorrectionOffset = sourceParam.ZeroPositionCorrectionOffset;
  140. targetParam.WarningValue = sourceParam.WarningValue;
  141. targetParam.AlarmValue = sourceParam.AlarmValue;
  142. targetParam.SoundLightAlarmAutoResetMode = sourceParam.SoundLightAlarmAutoResetMode;
  143. targetParam.WireRopeType = sourceParam.WireRopeType;
  144. targetParam.WireRopeCount = sourceParam.WireRopeCount;
  145. targetParam.WireRopeLength = sourceParam.WireRopeLength;
  146. targetParam.WireRopeDiameter = sourceParam.WireRopeDiameter;
  147. targetParam.WireRopeStrandCount = sourceParam.WireRopeStrandCount;
  148. targetParam.WireRopeStrandWireCount = sourceParam.WireRopeStrandWireCount;
  149. targetParam.EncoderDirection = sourceParam.EncoderDirection;
  150. targetParam.SystemTime = sourceParam.SystemTime;
  151. targetParam.TwistFactor = sourceParam.TwistFactor;
  152. targetParam.FirstCalibrationPositiont = sourceParam.FirstCalibrationPositiont;
  153. targetParam.SecondCalibrationPositiont = sourceParam.SecondCalibrationPositiont;
  154. }
  155. public static void ToEquipmentDataModel(this EquipmentModel equipmentModel, EquipmentDataModel equipmentDataModel)
  156. {
  157. if (equipmentModel == null || equipmentDataModel == null)
  158. return;
  159. // 赋值基本属性
  160. equipmentDataModel.RopeNumber = equipmentModel.RopeNumber;
  161. equipmentDataModel.RopeName = equipmentModel.RopeName;
  162. equipmentDataModel.TrolleyId = equipmentModel.TrolleyId;
  163. equipmentDataModel.IpAddress = equipmentModel.IpAddress;
  164. equipmentDataModel.SerialNo = equipmentModel.SerialNo;
  165. equipmentDataModel.LiftHightRatio = equipmentModel.LiftHightRatio;
  166. equipmentDataModel.DisableAlarm = equipmentModel.DisableAlarm;
  167. equipmentDataModel.InUseSensor = equipmentModel.InUseSensor;
  168. // 如果有Parameter数据,设置相关属性
  169. if (equipmentModel.Parameter != null)
  170. {
  171. equipmentDataModel.SensorCount = equipmentModel.Parameter.SensorCount;
  172. equipmentDataModel.RopeLength = equipmentModel.Parameter.WireRopeLength;
  173. equipmentDataModel.SamplingStep = equipmentModel.Parameter.SamplingStep;
  174. }
  175. }
  176. public static EquipmentDataModel ToEquipmentDataModel(this EquipmentModel equipmentModel)
  177. {
  178. var equipmentDataModel = new EquipmentDataModel();
  179. equipmentModel.ToEquipmentDataModel(equipmentDataModel);
  180. return equipmentDataModel;
  181. }
  182. // 可选:批量转换方法
  183. public static ObservableCollection<EquipmentDataModel> ToEquipmentDataModels(this ObservableCollection<EquipmentModel> equipmentModels)
  184. {
  185. var result = new ObservableCollection<EquipmentDataModel>();
  186. if (equipmentModels == null) return result;
  187. foreach (var equipmentModel in equipmentModels)
  188. {
  189. result.Add(equipmentModel.ToEquipmentDataModel());
  190. }
  191. return result;
  192. }
  193. public static SimpleRecordDto ToSimpleRecordDto(this RecordDto record)
  194. {
  195. if (record == null)
  196. return null;
  197. var simpleRecord = new SimpleRecordDto
  198. {
  199. Id = record.Id ?? 0,
  200. RopeName = record.RopeName,
  201. Time = record.StartTime,
  202. RiskLevel = record.RiskLevel,
  203. Description = $"检测出{record.DamageCount}处损伤",
  204. DetectionLength = record.DetectionLength
  205. };
  206. return simpleRecord;
  207. }
  208. public static ObservableCollection<SimpleRecordDto> ToSimpleRecordDtos(this List<RecordDto> records)
  209. {
  210. var result = new ObservableCollection<SimpleRecordDto>();
  211. if (records == null) return result;
  212. foreach (var record in records)
  213. {
  214. result.Add(record.ToSimpleRecordDto());
  215. }
  216. return result;
  217. }
  218. public static TTarget AssignFrom<TSource, TTarget>(this TTarget target, TSource source)
  219. where TTarget : class
  220. where TSource : class
  221. {
  222. if (source == null || target == null)
  223. {
  224. return target;
  225. }
  226. var sourceProperties = typeof(TSource).GetProperties();
  227. var targetProperties = typeof(TTarget).GetProperties();
  228. foreach (var sourceProp in sourceProperties)
  229. {
  230. var targetProp = targetProperties.FirstOrDefault(p => p.Name == sourceProp.Name && p.PropertyType == sourceProp.PropertyType);
  231. if (targetProp != null && targetProp.CanWrite)
  232. {
  233. var value = sourceProp.GetValue(source);
  234. targetProp.SetValue(target, value);
  235. }
  236. }
  237. return target;
  238. }
  239. public static TTarget CloneTo<TSource, TTarget>(this TSource source)
  240. where TTarget : class, new()
  241. where TSource : class
  242. {
  243. if (source == null)
  244. {
  245. return null;
  246. }
  247. var target = new TTarget();
  248. return target.AssignFrom(source);
  249. }
  250. }
  251. }