Parcourir la source

修改离线删除PDF。

Pen Li il y a 9 ans
Parent
commit
ceaee901e0

BIN
RedAnt ERP Mobile/RedAnt ERP Mobile.xcworkspace/xcuserdata/macmini1.xcuserdatad/UserInterfaceState.xcuserstate


+ 4 - 0
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.h

@@ -118,4 +118,8 @@
 
 +(NSData*) offline_request_tearsheet :(NSMutableDictionary *) params;
 
++ (void) offline_clear_PDFCache;
+
++ (void) offline_removePDFWithName:(NSString *)name;
+
 @end

+ 43 - 1
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m

@@ -10300,7 +10300,7 @@
     
     // 保存信息
     
-    NSString *save_pdf_sql = [NSString stringWithFormat:@"insert into offline_pdf (tearsheets_id,pdf_path,create_user,tear_note,tear_name,model_info,configureParams) values ((select ifnull(max(tearsheets_id),0) from offline_pdf) + 1,'%@','%@','%@','%@','%@','%@');",pdf_path,create_user,tear_note,tear_name,model_info,configureParams];
+    NSString *save_pdf_sql = [NSString stringWithFormat:@"insert into offline_pdf (tearsheets_id,pdf_path,create_user,tear_note,tear_name,model_info,configureParams,is_local) values ((select ifnull(max(tearsheets_id),0) from offline_pdf) + 1,'%@','%@','%@','%@','%@','%@',1);",pdf_path,create_user,tear_note,tear_name,model_info,configureParams];
     
     int result = [iSalesDB execSql:save_pdf_sql];
     
@@ -10598,6 +10598,31 @@
     
 }
 
++ (void)offline_removePDFWithName:(NSString *)name {
+    
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *cachefolder = [paths objectAtIndex:0];
+    NSString *pdfFolder = [cachefolder stringByAppendingPathComponent:@"pdf_cache"];
+    NSString *path = [pdfFolder stringByAppendingPathComponent:name];
+    
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    [fileManager removeItemAtPath:path error:nil];
+}
+
++ (void)offline_clear_PDFCache {
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *cachefolder = [paths objectAtIndex:0];
+    NSString *pdfFolder = [cachefolder stringByAppendingPathComponent:@"pdf_cache"];
+
+    NSArray *pdf_files = [fileManager contentsOfDirectoryAtPath:pdfFolder error:nil];
+    
+    for (NSString *path in pdf_files) {
+        [self offline_removePDFWithName:[path lastPathComponent]];
+    }
+    
+}
+
 + (NSData *)offline_removePDF:(NSMutableDictionary *)params {
     
     NSMutableDictionary *dic = [NSMutableDictionary dictionary];
@@ -10613,8 +10638,25 @@
         return [RAUtils dict2data:dic];
     }
     
+    NSString *is_local_sql = [NSString stringWithFormat:@"select is_local,pdf_path from offline_pdf where tearsheets_id = %d and create_user = '%@';",tearsheetsId,[self translateSingleQuote:user]];
+    
+    __block int is_local = 0;
+    __block NSString *path = @"";
+    [iSalesDB jk_query:is_local_sql completion:^(sqlite3_stmt *stmt, NSMutableDictionary *container, long *count) {
+        
+        is_local = sqlite3_column_int(stmt, 0);
+        path = [self textAtColumn:1 statement:stmt];
+    }];
+    
     NSString *sql = [NSString stringWithFormat:@"update offline_pdf set is_delete = 1 where tearsheets_id = %d and create_user = '%@';",tearsheetsId,[self translateSingleQuote:user]];
     
+    if (is_local == 1) {
+        sql = [NSString stringWithFormat:@"delete from offline_pdf where tearsheets_id = %d and create_user = '%@';",tearsheetsId,[self translateSingleQuote:user]];
+        
+        // 删除文件
+        [self offline_removePDFWithName:path];
+    }
+    
     
     int result = [iSalesDB execSql:sql];
     

+ 1 - 1
RedAnt ERP Mobile/common/data_provider/iSalesDB.m

@@ -725,7 +725,7 @@ void decryptfield (sqlite3_context *context, int argc, sqlite3_value **argv) {
     
     NSString *create_offline_portfolio = @"CREATE TABLE IF NOT EXISTS offline_portfolio (_id integer PRIMARY KEY,product_id integer,name text,description tex,item_id integer,fashion_id integer,available_qty integer,percentage integer,percent double,sheet_price double,sheet_discount double,img text,line_note text,is_delete integer,is_dirty integer,createtime timestamp DEFAULT(datetime('now','localtime')),modify_time timestamp DEFAULT(datetime('now','localtime')));";
     
-    NSString *create_offline_pdf = @"create table if not exists offline_pdf (_id integer primary key,tearsheets_id integer,pdf_path text,create_user text,tear_note text,tear_name text,model_info text,configureParams text,is_delete integer,is_dirty integer,createtime timestamp default(datetime('now','localtime')),modify_time timestamp DEFAULT(datetime('now','localtime')));";
+    NSString *create_offline_pdf = @"create table if not exists offline_pdf (_id integer primary key,tearsheets_id integer,pdf_path text,create_user text,tear_note text,tear_name text,model_info text,configureParams text,is_delete integer,is_dirty integer,is_local integer,createtime timestamp default(datetime('now','localtime')),modify_time timestamp DEFAULT(datetime('now','localtime')));";
     
     
     NSString* create_order_trigger=@"CREATE TRIGGER  if not exists offline_order_insert after insert on offline_order BEGIN select offline_dirty();  UPDATE offline_order SET modify_time= datetime('now', 'localtime') WHERE _id=new._id;END;CREATE TRIGGER  if not exists offline_order_update after update on offline_order BEGIN select offline_dirty();  UPDATE offline_order SET modify_time= datetime('now', 'localtime') WHERE _id=new._id;END;CREATE TRIGGER  if not exists offline_order_delete after delete on offline_order BEGIN select offline_dirty();  END;";

+ 1 - 0
RedAnt ERP Mobile/iSales-NPD/AppDelegate.m

@@ -1208,6 +1208,7 @@ void UncaughtExceptionHandler(NSException *exception) {
                     [iSalesDB execSql:[NSString stringWithFormat:@"delete from offline_cart where so_no in(%@)",so_id]];
                     [iSalesDB execSql:@"delete from offline_portfolio"];
                     [iSalesDB execSql:@"delete from offline_pdf"];
+                    [OLDataProvider offline_clear_PDFCache];
                     
                     NSString* contactMap = json[@"contactMap"];
                     if(contactMap.length>0)