| using WIDESEA_Core; | 
| using WIDESEA_DTO; | 
| using WIDESEA_Model.Models; | 
|   | 
| namespace WIDESEA_StorageBasicRepository | 
| { | 
|     public class LocationStatusChangeRecordRepository : RepositoryBase<DtLocationStatusChangeRecord>, ILocationStatusChangeRecordRepository | 
|     { | 
|         public LocationStatusChangeRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) | 
|         { | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 添加货位变动记录 | 
|         /// </summary> | 
|         /// <param name="changeRecordDto">数据模型</param> | 
|         /// <returns></returns> | 
|         public bool AddStatusChangeRecord(LocationChangeRecordDto changeRecordDto) | 
|         { | 
|             DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord() | 
|             { | 
|                 ChangeType = changeRecordDto.ChangeType, | 
|                 LocationCode = changeRecordDto.LocationCode, | 
|                 LocationId = changeRecordDto.LocationId, | 
|                 Creater = "System", | 
|                 TaskNum = changeRecordDto.TaskNum, | 
|                 AfterStatus = changeRecordDto.AfterStatus, | 
|                 BeforeStatus = changeRecordDto.BeforeStatus, | 
|             }; | 
|             return AddData(dtLocationStatusChangeRecord) > 0; | 
|         } | 
|         /// <summary> | 
|         /// 添加货位变动记录 | 
|         /// </summary> | 
|         /// <param name="locationInfo">更新实体</param> | 
|         /// <param name="lastStatus">变动前状态</param> | 
|         /// <param name="changeType">变动类型</param> | 
|         /// <param name="taskNum">任务号</param> | 
|         /// <exception cref="Exception"></exception> | 
|         public void AddLocationStatusChangeRecord(DtLocationInfo locationInfo, int lastStatus, int changeType, int? taskNum) | 
|         { | 
|             try | 
|             { | 
|                 DtLocationStatusChangeRecord locationStatusChangeRecord = new DtLocationStatusChangeRecord() | 
|                 { | 
|                     AfterStatus = locationInfo.LocationStatus, | 
|                     BeforeStatus = lastStatus, | 
|                     ChangeType = changeType, | 
|                     LocationCode = locationInfo.LocationCode, | 
|                     LocationId = locationInfo.Id, | 
|                     TaskNum = taskNum, | 
|                     Creater = "System", | 
|                     CreateDate = DateTime.Now, | 
|                 }; | 
|   | 
|                 base.AddData(locationStatusChangeRecord); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 throw new Exception($"{ex.Message}"); | 
|             } | 
|         } | 
|   | 
|         public void AddLocationStatusChangeRecord(List<DtLocationInfo> locationInfos, int newStatus, int changeType, List<int>? taskNums) | 
|         { | 
|             try | 
|             { | 
|                 List<DtLocationStatusChangeRecord> records = new List<DtLocationStatusChangeRecord>(); | 
|                 for (int i = 0; i < locationInfos.Count; i++) | 
|                 { | 
|                     DtLocationInfo locationInfo = locationInfos[i]; | 
|                     int? taskNum = (taskNums != null && taskNums.Count > 0 && taskNums.Count == locationInfos.Count) ? taskNums[i] : null; | 
|                     DtLocationStatusChangeRecord locationStatusChangeRecord = new DtLocationStatusChangeRecord() | 
|                     { | 
|                         AfterStatus = newStatus, | 
|                         BeforeStatus = locationInfo.LocationStatus, | 
|                         ChangeType = changeType, | 
|                         LocationCode = locationInfo.LocationCode, | 
|                         LocationId = locationInfo.Id, | 
|                         TaskNum = taskNum, | 
|                     }; | 
|                     records.Add(locationStatusChangeRecord); | 
|                 } | 
|                 AddData(records); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 throw new Exception($"{ex.Message}"); | 
|             } | 
|         } | 
|     } | 
| } |