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}"); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |