|  |  | @@ -4,6 +4,7 @@ from __future__ import division | 
            
            
              | 4 | 4 |   | 
            
            
              | 5 | 5 |  import xlrd | 
            
            
              | 6 | 6 |  from django.conf import settings | 
            
            
              |  | 7 | +from django.db import transaction | 
            
            
              | 7 | 8 |  from pysnippets.strsnippets import strip | 
            
            
              | 8 | 9 |  from TimeConvert import TimeConvert as tc | 
            
            
              | 9 | 10 |   | 
            
            
            
            
              |  |  | @@ -239,6 +240,7 @@ def fill_ym(): | 
            
            
              | 239 | 240 |              ssi.save() | 
            
            
              | 240 | 241 |   | 
            
            
              | 241 | 242 |   | 
            
            
              |  | 243 | +@transaction.atomic | 
            
            
              | 242 | 244 |  def refreshs(): | 
            
            
              | 243 | 245 |      ConsumeUserStatisticInfo.objects.all().delete() | 
            
            
              | 244 | 246 |      ConsumeSaleStatisticInfo.objects.all().delete() | 
            
            
            
            
              |  |  | @@ -255,21 +257,21 @@ def refreshs(): | 
            
            
              | 255 | 257 |          except ModelInfo.DoesNotExist: | 
            
            
              | 256 | 258 |              continue | 
            
            
              | 257 | 259 |   | 
            
            
              | 258 |  | -        cusi, _ = ConsumeUserStatisticInfo.objects.get_or_create( | 
            
            
              |  | 260 | +        cusi, _ = ConsumeUserStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 259 | 261 |              brand_id=mdl.brand_id, | 
            
            
              | 260 | 262 |              ymd=ymd, | 
            
            
              | 261 | 263 |          ) | 
            
            
              | 262 | 264 |          cusi.users = list(set(cusi.users + [log.user_id])) | 
            
            
              | 263 | 265 |          cusi.num = len(cusi.users) | 
            
            
              | 264 | 266 |          cusi.save() | 
            
            
              | 265 |  | -        cusi, _ = ConsumeUserStatisticInfo.objects.get_or_create( | 
            
            
              |  | 267 | +        cusi, _ = ConsumeUserStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 266 | 268 |              brand_id=mdl.brand_id, | 
            
            
              | 267 | 269 |              ymd=ymd[:6], | 
            
            
              | 268 | 270 |          ) | 
            
            
              | 269 | 271 |          cusi.users = list(set(cusi.users + [log.user_id])) | 
            
            
              | 270 | 272 |          cusi.num = len(cusi.users) | 
            
            
              | 271 | 273 |          cusi.save() | 
            
            
              | 272 |  | -        cusi, _ = ConsumeUserStatisticInfo.objects.get_or_create( | 
            
            
              |  | 274 | +        cusi, _ = ConsumeUserStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 273 | 275 |              brand_id=mdl.brand_id, | 
            
            
              | 274 | 276 |              ymd=ymd[:4], | 
            
            
              | 275 | 277 |          ) | 
            
            
            
            
              |  |  | @@ -277,19 +279,19 @@ def refreshs(): | 
            
            
              | 277 | 279 |          cusi.num = len(cusi.users) | 
            
            
              | 278 | 280 |          cusi.save() | 
            
            
              | 279 | 281 |   | 
            
            
              | 280 |  | -        cssi, _ = ConsumeSaleStatisticInfo.objects.get_or_create( | 
            
            
              |  | 282 | +        cssi, _ = ConsumeSaleStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 281 | 283 |              brand_id=mdl.brand_id, | 
            
            
              | 282 | 284 |              ymd=ymd, | 
            
            
              | 283 | 285 |          ) | 
            
            
              | 284 | 286 |          cssi.num += 1 | 
            
            
              | 285 | 287 |          cssi.save() | 
            
            
              | 286 |  | -        cssi, _ = ConsumeSaleStatisticInfo.objects.get_or_create( | 
            
            
              |  | 288 | +        cssi, _ = ConsumeSaleStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 287 | 289 |              brand_id=mdl.brand_id, | 
            
            
              | 288 | 290 |              ymd=ymd[:6], | 
            
            
              | 289 | 291 |          ) | 
            
            
              | 290 | 292 |          cssi.num += 1 | 
            
            
              | 291 | 293 |          cssi.save() | 
            
            
              | 292 |  | -        cssi, _ = ConsumeSaleStatisticInfo.objects.get_or_create( | 
            
            
              |  | 294 | +        cssi, _ = ConsumeSaleStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 293 | 295 |              brand_id=mdl.brand_id, | 
            
            
              | 294 | 296 |              ymd=ymd[:4], | 
            
            
              | 295 | 297 |          ) | 
            
            
            
            
              |  |  | @@ -297,7 +299,7 @@ def refreshs(): | 
            
            
              | 297 | 299 |          cssi.save() | 
            
            
              | 298 | 300 |   | 
            
            
              | 299 | 301 |          # 日型号销量统计 | 
            
            
              | 300 |  | -        cmssi, _ = ConsumeModelSaleStatisticInfo.objects.get_or_create( | 
            
            
              |  | 302 | +        cmssi, _ = ConsumeModelSaleStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 301 | 303 |              brand_id=mdl.brand_id, | 
            
            
              | 302 | 304 |              model_name=mdl.model_uni_name, | 
            
            
              | 303 | 305 |              ymd=ymd, | 
            
            
            
            
              |  |  | @@ -305,7 +307,7 @@ def refreshs(): | 
            
            
              | 305 | 307 |          cmssi.num += 1 | 
            
            
              | 306 | 308 |          cmssi.save() | 
            
            
              | 307 | 309 |          # 月型号销量统计 | 
            
            
              | 308 |  | -        cmssi, _ = ConsumeModelSaleStatisticInfo.objects.get_or_create( | 
            
            
              |  | 310 | +        cmssi, _ = ConsumeModelSaleStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 309 | 311 |              brand_id=mdl.brand_id, | 
            
            
              | 310 | 312 |              model_name=mdl.model_uni_name, | 
            
            
              | 311 | 313 |              ymd=ymd[:6], | 
            
            
            
            
              |  |  | @@ -313,7 +315,7 @@ def refreshs(): | 
            
            
              | 313 | 315 |          cmssi.num += 1 | 
            
            
              | 314 | 316 |          cmssi.save() | 
            
            
              | 315 | 317 |          # 年型号销量统计 | 
            
            
              | 316 |  | -        cmssi, _ = ConsumeModelSaleStatisticInfo.objects.get_or_create( | 
            
            
              |  | 318 | +        cmssi, _ = ConsumeModelSaleStatisticInfo.objects.select_for_update().get_or_create( | 
            
            
              | 317 | 319 |              brand_id=mdl.brand_id, | 
            
            
              | 318 | 320 |              model_name=mdl.model_uni_name, | 
            
            
              | 319 | 321 |              ymd=ymd[:4], | 
            
            
            
            
              |  |  | @@ -331,6 +333,7 @@ def refreshs(): | 
            
            
              | 331 | 333 |          }) | 
            
            
              | 332 | 334 |   | 
            
            
              | 333 | 335 |   | 
            
            
              |  | 336 | +@transaction.atomic | 
            
            
              | 334 | 337 |  def refreshs2(): | 
            
            
              | 335 | 338 |      SaleStatisticInfo.objects.all().delete() | 
            
            
              | 336 | 339 |      ModelSaleStatisticInfo.objects.all().delete() | 
            
            
            
            
              |  |  | @@ -354,7 +357,7 @@ def refreshs2(): | 
            
            
              | 354 | 357 |              continue | 
            
            
              | 355 | 358 |   | 
            
            
              | 356 | 359 |          try: | 
            
            
              | 357 |  | -            clerk = SaleclerkInfo.objects.select_for_update().get(clerk_id=log.clerk_id, status=True) | 
            
            
              |  | 360 | +            clerk = SaleclerkInfo.objects.get(clerk_id=log.clerk_id, status=True) | 
            
            
              | 358 | 361 |          except SaleclerkInfo.DoesNotExist: | 
            
            
              | 359 | 362 |              continue | 
            
            
              | 360 | 363 |   |