Browse Source

1.修改 上传 退到nas 页面 然后 退后台 息屏 上传完点击传输列表闪退问题

huangxiaodong 7 months ago
parent
commit
88895b8667

+ 2 - 2
创维盒子/双子星云手机.xcodeproj/project.pbxproj

@@ -6159,7 +6159,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Manual;
-				CURRENT_PROJECT_VERSION = 19;
+				CURRENT_PROJECT_VERSION = 21;
 				DEVELOPMENT_TEAM = "";
 				"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 6SV76WTUUR;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -6241,7 +6241,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Manual;
-				CURRENT_PROJECT_VERSION = 19;
+				CURRENT_PROJECT_VERSION = 21;
 				DEVELOPMENT_TEAM = "";
 				"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 6SV76WTUUR;
 				FRAMEWORK_SEARCH_PATHS = (

+ 21 - 13
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.m

@@ -605,9 +605,9 @@
 {
     
     //查询是否为nas上传中
-    BOOL isUploadingType = [nasMixUploadManager shareManager].isUploadIngType;
+    BOOL isnasUploadingType = [nasMixUploadManager shareManager].isUploadIngType;
     //判断是否要重新拿数据
-    BOOL isNeedRegetDataType = !isUploadingType;
+    BOOL isNeedRegetDataType = !isnasUploadingType;
     
     KWeakSelf
     [[nasUploadFileManager shareInstance] getDataInDatabaseFun:NO complete:^(NSMutableArray * _Nonnull Arr) {
@@ -621,7 +621,6 @@
             return;
         }
         
-        NSMutableArray *curLoadIngArr = Arr[0];
         //不是上传视频和进来的  所以上传状态(上传中和等待)改为重新上传
         if(!weakSelf.isUploadingType && isNeedRegetDataType){
             //改为暂停
@@ -629,17 +628,26 @@
 //                curModel.curUploadStateType = uploadStateSuspend;
 //            }
             //改为重新上传
-            NSMutableArray *handleUploadArr = [NSMutableArray new];
-            for (uploadFileDataModel * curModel in curLoadIngArr) {
-                if(curModel.curUploadStateType != uploadStateSuspend)
-                {
-                    [handleUploadArr addObject:curModel];
+            if(!isnasUploadingType){
+                NSMutableArray *curLoadIngArr = Arr[0];
+                
+                NSMutableArray *handleUploadArr = [NSMutableArray new];
+                for (uploadFileDataModel * curModel in curLoadIngArr) {
+                    
+                    if(!curModel){
+                        continue;
+                    }
+                    
+                    if(curModel.curUploadStateType != uploadStateSuspend)
+                    {
+                        [handleUploadArr addObject:curModel];
+                    }
+                }
+
+                if(handleUploadArr.count >0){
+                    //[[uploadFileManager shareInstance] reUploadFileFunBy:handleUploadArr withAll:YES];
+                    [[nasUploadFileManager shareInstance] reUploadFileFunBy:handleUploadArr withAll:YES];
                 }
-            }
-            
-            if(handleUploadArr.count >0){
-                //[[uploadFileManager shareInstance] reUploadFileFunBy:handleUploadArr withAll:YES];
-                [[nasUploadFileManager shareInstance] reUploadFileFunBy:handleUploadArr withAll:YES];
             }
         }
         

+ 16 - 7
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/uploadFileRecordTableView.m

@@ -361,14 +361,23 @@
             
             if(_isfirstRefreshType){
                 BOOL isAllUploadingType = NO;
-                NSArray *copyArr = [NSArray arrayWithArray:_uploadingArr];
-                HLog(@"上传刷新头部按钮 开始遍历")
-                for (uploadFileDataModel*model in copyArr) {
-                    if(model.curUploadStateType != uploadStateUploading){
-                        isAllUploadingType = YES;
-                        break;
-                    }
+                
+                if([nasMixUploadManager shareManager].isUploadIngType){
+                    isAllUploadingType = YES;
                 }
+                
+//                NSArray *copyArr = @[];
+//                if(_uploadingArr){
+//                    copyArr = [NSArray arrayWithArray:_uploadingArr];
+//                }
+//                
+//                HLog(@"上传刷新头部按钮 开始遍历")
+//                for (uploadFileDataModel*model in copyArr) {
+//                    if(model.curUploadStateType != uploadStateUploading){
+//                        isAllUploadingType = YES;
+//                        break;
+//                    }
+//                }
                 HLog(@"上传刷新头部按钮 结束遍历")
                 
                 _uploadingHeadView.rightButton.selected = isAllUploadingType;

+ 1 - 1
创维盒子/双子星云手机/NAS/nasUploadManager/customUploadOperation.h

@@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface customUploadOperation : NSObject
 
-@property(nonatomic,strong) uploadFileDataModel *fileModel;
+@property(nonatomic,weak) uploadFileDataModel *fileModel;
 @property(nonatomic,copy) NSString *filePath;
 @property(nonatomic,strong)NSFileHandle *fileHandle;
 

+ 2 - 4
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadFileManager.h

@@ -18,16 +18,14 @@ NS_ASSUME_NONNULL_BEGIN
 @interface nasUploadFileManager : NSObject
 +(instancetype)shareInstance;
 //数据库数据
-@property (nonatomic, strong) NSMutableArray * _Nullable databaseArr;
-@property (nonatomic, strong) NSMutableArray * _Nullable uploadingArr;
+@property (atomic, strong) NSMutableArray * _Nullable databaseArr;
+@property (atomic, strong) NSMutableArray * _Nullable uploadingArr;
 
 @property (nonatomic, assign) BOOL  isSuspendType;
 //@property (nonatomic, assign) BOOL  isUploadIngType;//弃用
 @property (nonatomic, assign) BOOL  isNewAddTaskType;
 //@property (nonatomic, assign) NSInteger  curUploadModelNumbers;
 @property (nonatomic, assign) NSInteger  reUploadIngSelectIndex;
-
-@property (nonatomic, strong) NSMutableArray * _Nullable netWorkFailSaveArr;
 @property (nonatomic, assign) BOOL  needToReUploadTaskType;//
 
 #pragma mark 读取数据库数据

+ 87 - 67
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadFileManager.m

@@ -49,8 +49,7 @@
     
     //KWeakSelf
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
-//        NSLock *lock = [NSLock new];
-//        [lock lock];
+
         HLog(@"begin bg_findAsync");
         [uploadFileDataModel bg_findAsync:nasUpLoadFile_tableName limit:0 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
             HLog(@"end bg_findAsync");
@@ -82,20 +81,15 @@
                     }
                 }
             
-            NSLock *lock = [NSLock new];
-            [lock lock];
-            
             NSMutableArray *newArr = [NSMutableArray new];
             [newArr addObject:otherArr];
             [newArr addObject:doneArr];
             [newArr addObject:failArr];
             self->_databaseArr = newArr;
             
-            [lock unlock];
-            
             complete(self->_databaseArr);
         }];
-//        [lock unlock];
+
     });
 
 }
@@ -126,7 +120,7 @@
     
     NSMutableArray *newUploadTaskArr = [NSMutableArray new];
     
-    NSLock *lock = [NSLock new];
+ 
     
     for (TZAssetModel * model in indexPathsForSelectedItems) {
         uploadFileDataModel * curModel = [uploadFileDataModel new];
@@ -134,7 +128,7 @@
         curModel.localIdentifier = model.asset.localIdentifier;
         
         BOOL isRepeatingTasksType = NO;
-        [lock lock];
+        
         //查询上传任务是否存在
         if(_databaseArr && _databaseArr.count == 3 ){
             NSMutableArray *uploadingArr = [[NSMutableArray alloc] initWithArray:_databaseArr[0]];
@@ -145,7 +139,7 @@
                 }
             }
         }
-        [lock unlock];
+        
         
         if(isRepeatingTasksType){
             continue;
@@ -296,6 +290,7 @@
     if(dataModel.curUploadStateType == uploadStateDone){
         [self handleDatabaseArrDeleteObjectInUploading:dataModel];
         [self handleDatabaseArrAddObjectInDone:dataModel];
+        
     }
     else if(dataModel.curUploadStateType == uploadStateFail){
         
@@ -313,12 +308,25 @@
         [self handleDatabaseArrDeleteObjectInUploading:dataModel];
         [self handleDatabaseArrAddObjectInFail:dataModel];
     }
+    else{
+        [cachesFileManager writeLogsWithMsg:@"nasUploadFileChangeingOneFileFunBy else"];
+    }
 
     dataModel.bg_tableName = nasUpLoadFile_tableName;
     [dataModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
         HLog(@"%@ 写入 %@", dataModel.filename, isSuccess ? @"成功":@"失败");
     }];
         
+    if(_databaseArr.count == 3)
+    {
+        NSMutableArray *ingArr = _databaseArr[0];
+       NSMutableArray* doneArr = _databaseArr[1];
+       NSMutableArray* failArr = _databaseArr[2];
+        
+        NSString *logstr = [[NSString alloc] initWithFormat:@"nasUploadFileChangeingOneFileFunBy ing:%ld,done:%ld,fail:%ld---total:%ld",ingArr.count,doneArr.count,failArr.count,ingArr.count + doneArr.count +failArr.count];
+        [cachesFileManager writeLogsWithMsg:logstr];
+    }
+    
     
     if(!_isSuspendType || dataModel.curUploadStateType != uploadStateSuspend){
         HLog(@"nasUploadFileChangeingOneFileFunBy uploadFileRefreshNotification")
@@ -331,59 +339,68 @@
 - (void)handleDatabaseArrDeleteObjectInUploading:(uploadFileDataModel*)model
 {
     HLog(@"删除上传中的任务")
-    NSLock *lock = [NSLock new];
-    [lock lock];
-    if(_databaseArr && _databaseArr.count == 3 ){
-        
-        NSMutableArray *ingArr = _databaseArr[0];
-        NSInteger count = ingArr.count;
-        [ingArr removeObject:model];
+    @synchronized (self) {
         
-        NSInteger atferDelCount = ingArr.count;
-        
-        if(count == atferDelCount){
-            HLog(@"删除上传中的任务 异常 需要遍历 开始")
-            for (couldPhoneFileModel*preModel in ingArr) {
-                if(preModel.bg_id.integerValue == model.bg_id.integerValue){
-                    [ingArr removeObject:preModel];
-                    break;
+        if(_databaseArr && _databaseArr.count == 3 ){
+            
+            NSMutableArray *ingArr = _databaseArr[0];
+            NSInteger count = ingArr.count;
+            [ingArr removeObject:model];
+            
+            NSInteger atferDelCount = ingArr.count;
+            
+            if(count == atferDelCount){
+                NSString* logStr = [[NSString alloc] initWithFormat:@"DeleteObjectInUploading error begin %ld--model:%@--%@",ingArr.count,model,model.filename];
+                HLog(@"%@",logStr)
+                [cachesFileManager writeLogsWithMsg:logStr];
+                
+                for (uploadFileDataModel*preModel in ingArr) {
+                    if(preModel.bg_id.integerValue == model.bg_id.integerValue){
+                        if ([preModel.filename isEqualToString:model.filename]) {
+                            [ingArr removeObject:preModel];
+                        }else{
+                            NSString* logStr22 = [[NSString alloc] initWithFormat:@"filename error %@",preModel.filename];
+                            [cachesFileManager writeLogsWithMsg:logStr22];
+                        }
+                        break;
+                    }
                 }
+                NSString* logStr2 = [[NSString alloc] initWithFormat:@"DeleteObjectInUploading error end %ld",ingArr.count];
+                HLog(@"%@",logStr2)
+                [cachesFileManager writeLogsWithMsg:logStr2];
+                
             }
-            HLog(@"删除上传中的任务 异常 需要遍历 结束")
         }
     }
-    [lock unlock];
 }
 
 #pragma mark 添加任务到上传完成
 - (void)handleDatabaseArrAddObjectInDone:(uploadFileDataModel*)model
 {
     HLog(@"添加任务到上传完成")
-    NSLock *lock = [NSLock new];
-    [lock lock];
-    if(_databaseArr && _databaseArr.count == 3 ){
-        NSMutableArray *doneArr = _databaseArr[1];
-        if(model){
-            [doneArr insertObject:model atIndex:0];
+    @synchronized (self) {
+        if(_databaseArr && _databaseArr.count == 3 ){
+            NSMutableArray *doneArr = _databaseArr[1];
+            if(model){
+                [doneArr insertObject:model atIndex:0];
+            }
         }
     }
-    [lock unlock];
 }
 
 #pragma mark 添加任务到上传失败
 - (void)handleDatabaseArrAddObjectInFail:(uploadFileDataModel*)model
 {
     HLog(@"添加任务到上传失败")
-    NSLock *lock = [NSLock new];
-    [lock lock];
-    if(_databaseArr && _databaseArr.count == 3 ){
-        NSMutableArray *failArr = _databaseArr[2];
-        if(model){
-            [failArr insertObject:model atIndex:0];
-        }
+    @synchronized(self){
+        if(_databaseArr && _databaseArr.count == 3 ){
+            NSMutableArray *failArr = _databaseArr[2];
+            if(model){
+                [failArr insertObject:model atIndex:0];
+            }
 
+        }
     }
-    [lock unlock];
 }
 
 #pragma mark 上传完成所有任务
@@ -513,8 +530,8 @@
 #pragma mark 处理重复上传文件的问题
 - (void)handleRetryUploadAndDelRecordFun:(uploadFileDataModel *)uploadFileDataMod
 {
-    NSLock *lock = [NSLock new];
-    [lock lock];
+    @synchronized (self) {
+        
     
     if (!_databaseArr || _databaseArr.count != 3) {
         return;
@@ -557,7 +574,7 @@
         }
     }
     
-    [lock unlock];
+    }
 }
 
 - (void)checkHadUploadTaskWithComplete:(custom_complete_B)complete
@@ -588,7 +605,7 @@
         return;
     }
     
-
+    
     //1.修改状态从失败改为上传中
     for (uploadFileDataModel * model in Arr) {
         model.curUploadStateType = uploadStateUploading;
@@ -676,15 +693,11 @@
 - (void)saveUploadingTaskByNetWorkErrorFun
 {
     HLog(@"hxd saveUploadingTaskByNetWorkErrorFun")
-    _netWorkFailSaveArr = [NSMutableArray arrayWithArray:self.uploadingArr];
-    //[self suspendUploadFileFun:YES withModel:nil];
-    
-    [[nasMixUploadManager shareManager] cancelUploadAllTaskFun];
-    
-    if(_netWorkFailSaveArr.count > 0){
+   
+    if(self.uploadingArr.count > 0){
+        [[nasMixUploadManager shareManager] cancelUploadAllTaskFun];
         _needToReUploadTaskType = YES;
     }
-    
 }
 
 //重新上传网络失败的任务
@@ -692,17 +705,26 @@
 {
     [nasUploadFileManager shareInstance].needToReUploadTaskType = NO;
     HLog(@"reUploadFileFunByNetWork")
-    if(_netWorkFailSaveArr && _netWorkFailSaveArr.count >0){
-        HLog(@"reUploadFileFunByNetWork  _netWorkFailSaveArr.count >0")
+    [cachesFileManager writeLogsWithMsg:@"reUploadFileFunByNetWork"];
+    if(self.uploadingArr.count >0 && _databaseArr.count == 3){
+        
+        NSMutableArray* doneArr = _databaseArr[1];
+        NSMutableArray* failArr = _databaseArr[2];
+        
+        NSString *logstr = [[NSString alloc] initWithFormat:@"ing:%ld,done:%ld,fail:%ld",self.uploadingArr.count,doneArr.count,failArr.count];
+        
+        [cachesFileManager writeLogsWithMsg:logstr];
+        
         //1.修改状态从失败改为上传中
-        for (uploadFileDataModel * model in _netWorkFailSaveArr) {
-            for (uploadFileDataModel * uploadingModel in self.uploadingArr){
-               if (model.bg_id.integerValue == uploadingModel.bg_id.integerValue) {
-                   uploadingModel.curUploadStateType = uploadStateUploading;
-                   continue;
-               }
-           }
-        }
+//        for (uploadFileDataModel * model in _netWorkFailSaveArr) {
+//            model.curUploadStateType = uploadStateUploading;
+////            for (uploadFileDataModel * uploadingModel in self.uploadingArr){
+////               if (model.bg_id.integerValue == uploadingModel.bg_id.integerValue) {
+////                   uploadingModel.curUploadStateType = uploadStateUploading;
+////                   continue;
+////               }
+////           }
+//        }
         
         //2、保存到数控库
 //        [uploadFileDataModel bg_saveOrUpdateArrayAsync:_netWorkFailSaveArr complete:^(BOOL isSuccess) {
@@ -720,9 +742,7 @@
         }
         
         //4.重新开始上传
-        [[nasMixUploadManager shareManager] addUploadWithModels:_netWorkFailSaveArr];
-        [_netWorkFailSaveArr removeAllObjects];
-           
+        [[nasMixUploadManager shareManager] addUploadWithModels:self.uploadingArr];
     }
 }
 @end