Browse Source

全选图片进行上传,返回再次全选图片进行上传,上传成功列表部分图片显示空白

huangxiaodong 2 years ago
parent
commit
cee52b5f76

+ 13 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/photoView/uploadFileRecordCell.m

@@ -290,6 +290,10 @@
 //        totalSize = [curUploadFileDataModel.videoData length];
 //    }
     
+    if(totalSize == 0.0){
+        totalSize += 0.0001;
+    }
+    
     CGFloat curProgress = curUploadFileDataModel.didUploadBytes/(totalSize*1.0);
     
     //HLog(@"hxdhxdddddddd %@ -- %f -- %ld",curUploadFileDataModel.bg_id,curProgress,curUploadFileDataModel.didUploadBytes );
@@ -299,6 +303,15 @@
     }
     
     frame.size.width =  frame.size.width * curProgress;
+    
+    if (isnan(frame.size.width))
+    {
+        return;
+    }
+    
+//    HLog(@"%f, %f, %f, %f,",frame.origin.x,frame.origin.y,frame.size.width,frame.size.height);
+//    HLog(@"%@",_progressSelectView);
+    
     _progressSelectView.frame = frame;
     //_glayer.frame = frame;
     

+ 95 - 8
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/uploadFileManager.m

@@ -108,6 +108,22 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
         curModel.asset = model.asset;
         curModel.localIdentifier = model.asset.localIdentifier;
         
+        BOOL isRepeatingTasksType = NO;
+        //查询上传任务是否存在
+        if(_databaseArr && _databaseArr.count == 3 ){
+            NSMutableArray *uploadingArr = _databaseArr[0];
+            for (uploadFileDataModel *preModel in uploadingArr) {
+                if([preModel.localIdentifier isEqualToString:curModel.localIdentifier]){
+                    isRepeatingTasksType = YES;
+                    break;
+                }
+            }
+        }
+        
+        if(isRepeatingTasksType){
+            continue;
+        }
+        
         curModel.imageData = model.imageData;
         curModel.videoData = model.videoData;
         curModel.filename = [model.asset valueForKey:@"filename"];
@@ -403,6 +419,7 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
     where = [NSString stringWithFormat:@"where %@=%@ ",bg_sqlKey(@"bg_id"),bg_sqlValue(model.bg_id)];
     //HLog(@"ffff:%@",_curUploadFileDataModel.bg_id);
     
+    KWeakSelf
     [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName where:where complete:^(NSArray * _Nullable array) {
         for (uploadFileDataModel * curModel in array) {
             curModel.curUploadStateType = curUploadStateType;
@@ -415,9 +432,12 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
                     [cachesFileManager removeItemAtPath:curModel.filename type:uploadFileTypeVideo error:nil];
                 }
                 
+                [weakSelf handleDatabaseArrByDelete:curModel];
+                [weakSelf handleDatabaseArrByInDone:curModel];
             }
             else if(curUploadStateType == uploadStateFail){
-                
+                [weakSelf handleDatabaseArrByDelete:curModel];
+                [weakSelf handleDatabaseArrByInFail:curModel];
             }
             
             [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
@@ -432,6 +452,37 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
 
 }
 
+
+- (void)handleDatabaseArrByDelete:(uploadFileDataModel*)delModel
+{
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *uploadingArr = _databaseArr[0];
+        
+        for (uploadFileDataModel *baseUploadFileDataMod in uploadingArr) {
+            if(delModel.bg_id.integerValue == baseUploadFileDataMod.bg_id.integerValue){
+                [uploadingArr removeObject:baseUploadFileDataMod];
+                break;
+            }
+        }
+    }
+}
+
+- (void)handleDatabaseArrByInDone:(uploadFileDataModel*)uploadmodel
+{
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *uploadDoneArr = _databaseArr[1];
+        [uploadDoneArr addObject:uploadmodel];
+    }
+}
+
+- (void)handleDatabaseArrByInFail:(uploadFileDataModel*)uploadmodel
+{
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *uploadFailArr = _databaseArr[2];
+        [uploadFailArr addObject:uploadmodel];
+    }
+}
+
 //暂停上传完成
 - (void)suspendUploadFileFun:(BOOL)isSuspendAll
 {
@@ -551,15 +602,51 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
         
         //删除本地图片
         if(isSuc && isDelCache){
-            if(uploadFileDataMod.curUploadFileType == uploadFileTypeVideo){
-                [cachesFileManager removeItemAtPath:uploadFileDataMod.videoFirstImageName type:uploadFileTypeImage error:nil];
+            //判断是否可以删除本地缓存
+            if(_databaseArr && _databaseArr.count == 3 ){
+                NSMutableArray *uploadingArr = _databaseArr[0];
+                NSMutableArray *uploadDoneArr = _databaseArr[1];
+                NSMutableArray *uploadFailArr = _databaseArr[2];
                 
-                [cachesFileManager removeItemAtPath:uploadFileDataMod.filename type:uploadFileTypeVideo error:nil];
-            }
-            else{
-                [cachesFileManager removeItemAtPath:uploadFileDataMod.filename type:uploadFileTypeImage error:nil];
+                [self handleDatabaseArrByDelete:uploadFileDataMod];
+                
+                BOOL isNeedDel = YES;
+                for (uploadFileDataModel *baseUploadFileDataMod in uploadingArr) {
+                    if([_curUploadFileDataModel.filename isEqualToString:baseUploadFileDataMod.filename] ){
+                        isNeedDel = NO;
+                        break;
+                    }
+                }
+                
+                if(!isNeedDel){
+                    for (uploadFileDataModel *baseUploadFileDataMod in uploadDoneArr) {
+                        if([_curUploadFileDataModel.filename isEqualToString:baseUploadFileDataMod.filename] ){
+                            isNeedDel = NO;
+                            break;
+                        }
+                    }
+                }
+                
+                if(!isNeedDel){
+                    for (uploadFileDataModel *baseUploadFileDataMod in uploadFailArr) {
+                        if([_curUploadFileDataModel.filename isEqualToString:baseUploadFileDataMod.filename] ){
+                            isNeedDel = NO;
+                            break;
+                        }
+                    }
+                }
+                
+                if(isNeedDel){
+                    if(uploadFileDataMod.curUploadFileType == uploadFileTypeVideo){
+                        [cachesFileManager removeItemAtPath:uploadFileDataMod.videoFirstImageName type:uploadFileTypeImage error:nil];
+                        
+                        [cachesFileManager removeItemAtPath:uploadFileDataMod.filename type:uploadFileTypeVideo error:nil];
+                    }
+                    else{
+                        [cachesFileManager removeItemAtPath:uploadFileDataMod.filename type:uploadFileTypeImage error:nil];
+                    }
+                }
             }
-            
         }
         
         if(isSuc && !isDelCache){//上传报云机已经存在文件了 查询本地是否有任务记录

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

@@ -354,11 +354,19 @@
 
 -(void)gotoUploadFile:(NSMutableArray*)indexPathsForSelectedItems
 {
+    KWeakSelf
+    [[uploadFileManager shareInstance] getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+       
+        [weakSelf realGotoUploadFile:indexPathsForSelectedItems];
+    }];
     
+}
+
+- (void)realGotoUploadFile:(NSMutableArray *)indexPathsForSelectedItems
+{
     KWeakSelf
     [[uploadFileManager shareInstance] handlTZAssetModelToUploadFileDataFunBy:indexPathsForSelectedItems complete:^(NSMutableArray * _Nonnull Arr) {
-        NSMutableArray *arr1 = Arr;
-        
+        //NSMutableArray *arr1 = Arr;
         //[weakSelf setRecordBodyDataFunBy:arr1];
         
         weakSelf.leftTableView.curDataArr = Arr[0];
@@ -370,8 +378,6 @@
         weakSelf.rightTableView.curDataArr = Arr[2];
         [weakSelf.rightTableView reloadDataFun];
     }];
-    
-    
 }
 
 #pragma mark 读取数据库数据