Exemplo n.º 1
0
 def post(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         try:
             if data['code'] == "1031":
                 return Response(FBMsg.err_bad())
         except:
             create_name = Users.objects.filter(openid=request.auth,
                                                appid=request.user.appid,
                                                is_delete=0).first().name
             if ListModel.objects.filter(appid=request.user.appid,
                                         name=str(data[0]['so_number']),
                                         is_delete=0).exists():
                 customer_data = ListModel.objects.filter(
                     appid=request.user.appid,
                     name=str(data[0]['so_number']),
                     is_delete=0).first()
                 customer_data.customer = str(data[0]['customer'])
                 customer_data.save()
                 for i in range(len(data)):
                     DetailModel.objects.create(
                         appid=request.user.appid,
                         name=str(data[i]['so_number']),
                         goods_code=str(data[i]['goods_code']),
                         goods_name=str(data[i]['goods_name']),
                         so_qty=int(data[i]['goods_qty']),
                         create_name=create_name,
                         customer=str(data[i]['customer']),
                         t_code=Md5.md5(str(data[i]['goods_name'])))
             else:
                 ret = FBMsg.wms_po_empty()
                 ret['data'] = data
                 return Response(ret)
             ip = request.META.get(
                 'HTTP_X_FORWARDED_FOR') if request.META.get(
                     'HTTP_X_FORWARDED_FOR') else request.META.get(
                         'REMOTE_ADDR')
             ret = FBMsg.wms_ret()
             ret['ip'] = ip
             ret['data'] = data
             return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 2
0
 def post(self, request, *args, **kwargs):
     postdata = request.data
     data = {
         "name": postdata.get('name', ''),
         "mobile": postdata.get('mobile', ''),
         "comments": postdata.get('comments', ''),
         "openid": postdata.get('openid', '')
     }
     script_obj = re.findall(r'script', str(data), re.IGNORECASE)
     select_obj = re.findall(r'select', str(data), re.IGNORECASE)
     if script_obj:
         return JsonResponse(FBMsg.err_bad())
     elif select_obj:
         return JsonResponse(FBMsg.err_bad())
     else:
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         if 'name' not in data:
             err_contact_name = FBMsg.err_contact_name()
             return JsonResponse(err_contact_name)
         else:
             if data['name'] == '':
                 err_contact_name = FBMsg.err_contact_name()
                 return JsonResponse(err_contact_name)
             else:
                 if 'mobile' not in data:
                     err_contact_mobile = FBMsg.err_contact_mobile()
                     return JsonResponse(err_contact_mobile)
                 else:
                     if data['mobile'] == '':
                         err_contact_mobile = FBMsg.err_contact_mobile()
                         return JsonResponse(err_contact_mobile)
                     else:
                         if 'comments' not in data:
                             err_contact_comments = FBMsg.err_contact_comments(
                             )
                             return JsonResponse(err_contact_comments)
                         else:
                             if data['comments'] == '':
                                 err_contact_comments = FBMsg.err_contact_comments(
                                 )
                                 return JsonResponse(err_contact_comments)
                             else:
                                 Contact.objects.create(
                                     name=data['name'],
                                     mobile=data['mobile'],
                                     comments=data['comments'],
                                     openid=data['openid'],
                                     ip=ip)
                                 ret = FBMsg.ret()
                                 ret['ip'] = ip
                                 ret['data'] = data
                                 return JsonResponse(ret)
Exemplo n.º 3
0
 def get(self, request, *args, **kwargs):
     ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
         'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
     os.system("python3 /data/pi/utils/tracking.py")
     ret = FBMsg.ret()
     ret['ip'] = ip
     return Response(ret)
Exemplo n.º 4
0
 def post(self, request, *args, **kwargs):
     data = request.data
     ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
         'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
     if Users.objects.filter(openid=data['data'], is_delete=0).exists():
         ret = FBMsg.ret()
         ret['ip'] = ip
         ret['data'] = {
             "openid":
             Users.objects.filter(openid=data['data'],
                                  is_delete=0).first().openid
         }
         return JsonResponse(ret)
     else:
         err_ret = FBMsg.err_ret()
         return JsonResponse(err_ret)
Exemplo n.º 5
0
 def delete(self, request, *args, **kwargs):
     data = DataSolve.datasolve(request)
     try:
         if data['code'] == "1031":
             return Response(FBMsg.err_bad())
     except:
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         if models.NoteBook.objects.filter(openid=request.auth, id=data['id']).exists():
             delete_data = models.NoteBook.objects.get(id=data['id'])
             delete_data.is_delete = 1
             delete_data.save()
             ret = FBMsg.ret()
             ret['ip'] = ip
             ret['data'] = delete_data.title
             return Response(ret)
Exemplo n.º 6
0
 def put(self, request, format=None):
     file_obj = request.data['file']
     vip_id = Users.objects.filter(appid=request.user.appid, developer=1, is_delete=0).first().vip
     file_check = FileVipCheck.FileVipCheck(file_obj.size, vip_id)
     if file_check == "N":
         return Response(FBMsg.err_data())
     elif file_check == "Y":
         if os.path.exists(os.path.join(settings.BASE_DIR, 'media/upload/' + pathlink)):
             pass
         else:
             os.makedirs(os.path.join(settings.BASE_DIR, 'media/upload/' + pathlink))
         if file_obj.name.endswith('.xlsx'):
             filename = os.path.join(settings.BASE_DIR, 'media/upload/' + pathlink + '/' + request.user.appid + '.xlsx')
         elif file_obj.name.endswith('.xls'):
             filename = os.path.join(settings.BASE_DIR, 'media/upload/' + pathlink + '/' + request.user.appid + '.xls')
         else:
             return Response(FBMsg.err_data())
         with open(filename, 'wb+') as f:
             for chunk in file_obj.chunks():
                 f.write(chunk)
             f.close()
         df = pd.read_excel(filename)
         if ListModel.objects.filter(appid=request.user.appid).exists():
             upload_data = ListModel.objects.filter(appid=request.user.appid)
             for i in range(len(upload_data)):
                 upload_data[i].delete()
         for index, row in df.iterrows():
             if str(row[pathname]) == '':
                 pass
             else:
                 if ListModel.objects.filter(appid=request.user.appid, is_delete=0).count() > 0:
                     ret = FBMsg.wms_warehouse_more()
                     ret['data'] = row
                     return Response(ret)
                 else:
                     ListModel.objects.create(appid=request.user.appid, name=str(row[pathname]), province=str(row['省份']),
                                              city=str(row['城市']), district=str(row['行政区']), address=str(row['详细地址']),
                                              manager=str(row['负责人']), mobile=str(row['联系电话']),
                                              t_code=Md5.md5(str(row[pathname])))
         os.remove(filename)
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         ret = FBMsg.wms_ret()
         ret['ip'] = ip
         return Response(ret)
     else:
         return Response(FBMsg.err_data())
Exemplo n.º 7
0
 def post(self, request, *args, **kwargs):
     data = DataSolve.datasolve(request)
     try:
         if data['code'] == "1031":
             return Response(FBMsg.err_bad())
     except:
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         note_day = data['note_day'].split('/')
         note_day = datetime.datetime(int(note_day[0]), int(note_day[1]), int(note_day[2]))
         note_day = note_day.strftime('%Y-%m-%d')
         models.NoteBook.objects.create(openid=request.auth, icon='close', icon_color='light-blue-10',
                                        title=data['title'], note_day=note_day, desc=data['desc'])
         ret = FBMsg.ret()
         ret['ip'] = ip
         ret['data'] = data
         return Response(ret)
Exemplo n.º 8
0
 def get(self, request, *args, **kwargs):
     start_date = request._request.GET.get('note_day', '')
     date_detail = start_date.split('/')
     search_day = datetime.datetime(int(date_detail[0]), int(date_detail[1]), int(date_detail[2]))
     search_day = search_day.strftime('%Y-%m-%d')
     list = models.NoteBook.objects.filter(openid=request.auth, note_day=search_day, progress=0, is_delete=0).count()
     ret = FBMsg.ret()
     ret['data'] = list
     return Response(ret)
Exemplo n.º 9
0
 def get(self, request, *args, **kwargs):
     ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
         'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
     sort = request._request.GET.get('sort', '-create_time')
     list = models.Users.objects.filter(appid=request.user.appid,
                                        developer=0,
                                        is_delete=0).order_by(sort)
     if request._request.GET.get('name', ''):
         list = list.filter(name__icontains=request._request.GET.get(
             'name', '')).order_by(sort)
     if request._request.GET.get('nickname', ''):
         list = list.filter(nickname__icontains=request._request.GET.get(
             'nickname', '')).order_by(sort)
     if request._request.GET.get('start_date_create', ''):
         try:
             start_date = request._request.GET.get('start_date_create', '')
             if request._request.GET.get('end_date_create', ''):
                 date_end = request._request.GET.get('end_date_create', '')
                 delta = datetime.timedelta(days=1)
                 date = [int(x) for x in date_end.split('-')]
                 old = datetime.datetime(date[0], date[1], date[2])
                 end_date = (old + delta).strftime('%Y-%m-%d')
             else:
                 today = datetime.date.today()
                 delta = datetime.timedelta(days=1)
                 end_date = (today + delta).strftime('%Y-%m-%d')
             list = list.filter(
                 create_time__range=[start_date, end_date]).order_by(sort)
         except:
             pass
     if request._request.GET.get('start_date_update', ''):
         try:
             start_date = request._request.GET.get('start_date_update', '')
             if request._request.GET.get('end_date_update', ''):
                 date_end = request._request.GET.get('end_date_update', '')
                 delta = datetime.timedelta(days=1)
                 date = [int(x) for x in date_end.split('-')]
                 old = datetime.datetime(date[0], date[1], date[2])
                 end_date = (old + delta).strftime('%Y-%m-%d')
             else:
                 today = datetime.date.today()
                 delta = datetime.timedelta(days=1)
                 end_date = (today + delta).strftime('%Y-%m-%d')
             list = list.filter(
                 last_update_time__range=[start_date, end_date]).order_by(
                     sort)
         except:
             pass
     pg = page.MyPageNumberPagination()
     pg_list = pg.paginate_queryset(queryset=list,
                                    request=request,
                                    view=self)
     list_ser = serializers.UserListSerializers(pg_list, many=True)
     ret = FBMsg.ret()
     ret['ip'] = ip
     ret['data'] = list_ser.data
     return pg.get_paginated_response(ret)
Exemplo n.º 10
0
 def delete(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         delete_data = ListModel.objects.filter(appid=request.user.appid)
         for i in range(len(delete_data)):
             delete_data[i].delete()
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         ret = FBMsg.wms_ret()
         ret['ip'] = ip
         return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 11
0
 def post(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         try:
             if data['code'] == "1031":
                 return Response(FBMsg.err_bad())
         except:
             if ListModel.objects.filter(appid=request.user.appid,
                                         name=str(data['name']),
                                         is_delete=0).exists():
                 ret = FBMsg.wms_same()
                 ret['data'] = data
                 return Response(ret)
             else:
                 create_name = Users.objects.filter(
                     openid=request.auth,
                     appid=request.user.appid,
                     is_delete=0).first().name
                 ListModel.objects.create(
                     appid=request.user.appid,
                     name=str(data['name']),
                     plate_license=str(data['plate_license']),
                     mobile=int(data['mobile']),
                     identity_card=str(data['identity_card']),
                     driver_license=str(data['driver_license']),
                     vehicle_license=str(data['vehicle_license']),
                     create_name=create_name,
                     t_code=Md5.md5(str(data['name'])))
                 ip = request.META.get(
                     'HTTP_X_FORWARDED_FOR') if request.META.get(
                         'HTTP_X_FORWARDED_FOR') else request.META.get(
                             'REMOTE_ADDR')
                 ret = FBMsg.wms_ret()
                 ret['ip'] = ip
                 ret['data'] = data
                 return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 12
0
 def post(self, request, *args, **kwargs):
     today = datetime.date.today()
     delta = datetime.timedelta(days=90)
     start_date = (today - delta).strftime('%Y-%m-%d')
     end_date = (today + delta).strftime('%Y-%m-%d')
     list = models.NoteBook.objects.filter(note_day__range=[start_date, end_date], is_delete=0).order_by('-create_time')
     list_ser = serializers.NoteBookEventSerializers(list, many=True)
     ret = FBMsg.ret()
     ret['data'] = list_ser.data
     return Response(ret)
Exemplo n.º 13
0
 def authenticate(self, request):
     if request.path == "/docs/":
         return ('docs', 'ok')
     else:
         openid = request._request.GET.get('openid', '')
         if Users.objects.filter(openid=openid, is_delete=0).exists():
             user = Users.objects.filter(openid=openid, is_delete=0).first()
             return (user, openid)
         else:
             raise exceptions.AuthenticationFailed(FBMsg.err_auth())
Exemplo n.º 14
0
 def post(self, request, format=None):
     file_obj = request.data['file']
     vip_id = Users.objects.get(appid=request.user.appid,
                                developer=1,
                                is_delete=0).vip
     if vip_id == 0:
         if file_obj.size >= 102400:
             return Response(FBMsg.err_data())
     elif vip_id == 4:
         if file_obj.size >= 102400:
             return Response(FBMsg.err_data())
     if file_obj.name.endswith('.xlsx'):
         filename = os.path.join(settings.BASE_DIR,
                                 'media/shipping/' + request.auth + '.xlsx')
     elif file_obj.name.endswith('.xls'):
         filename = os.path.join(settings.BASE_DIR,
                                 'media/shipping/' + request.auth + '.xls')
     else:
         return Response(FBMsg.err_data())
     with open(filename, 'wb+') as f:
         for chunk in file_obj.chunks():
             f.write(chunk)
         f.close()
     df = pd.read_excel(filename)
     if ShippingModel.objects.filter(appid=request.user.appid).exists():
         shipping_data = ShippingModel.objects.filter(
             appid=request.user.appid)
         for i in range(len(shipping_data)):
             shipping_data[i].delete()
     for index, row in df.iterrows():
         date_detail = str(row['发货日期']).split(' ')
         date_detail = [int(x) for x in str(date_detail[0]).split('-')]
         shipping_day = datetime.datetime(int(date_detail[0]),
                                          int(date_detail[1]),
                                          int(date_detail[2]))
         shipping_time = shipping_day.strftime('%Y-%m-%d')
         ShippingModel.objects.create(appid=request.user.appid,
                                      goods_code=str(row['商品编号']),
                                      shipping_qty=int(row['发货数量']),
                                      shipping_time=shipping_time)
     os.remove(filename)
     return Response(FBMsg.ret())
Exemplo n.º 15
0
 def datasolve(d):
     data = d.data
     script_obj = re.findall(r'script', str(data), re.IGNORECASE)
     select_obj = re.findall(r'select', str(data), re.IGNORECASE)
     if script_obj:
         return FBMsg.err_bad()
     elif select_obj:
         return FBMsg.err_bad()
     else:
         type_obj_dict = re.findall(r'dict', str(type(data)), re.IGNORECASE)
         type_obj_list = re.findall(r'list', str(type(data)), re.IGNORECASE)
         if len(type_obj_dict) > 0:
             if 'data' in data:
                 data = data['data']
                 return data
             else:
                 return data
         elif len(type_obj_list) > 0:
             return data
         else:
             return FBMsg.err_bad()
Exemplo n.º 16
0
 def post(self, request, format=None):
     file_obj = request.data['file']
     vip_id = Users.objects.get(appid=request.user.appid,
                                developer=1,
                                is_delete=0).vip
     if vip_id == 0:
         if file_obj.size >= 102400:
             return Response(FBMsg.err_data())
     elif vip_id == 4:
         if file_obj.size >= 102400:
             return Response(FBMsg.err_data())
     if file_obj.name.endswith('.xlsx'):
         filename = os.path.join(settings.BASE_DIR,
                                 'media/baseinfo/' + request.auth + '.xlsx')
     elif file_obj.name.endswith('.xls'):
         filename = os.path.join(settings.BASE_DIR,
                                 'media/baseinfo/' + request.auth + '.xls')
     else:
         return Response(FBMsg.err_data())
     with open(filename, 'wb+') as f:
         for chunk in file_obj.chunks():
             f.write(chunk)
         f.close()
     df = pd.read_excel(filename)
     if BaseInfoModel.objects.filter(appid=request.user.appid).exists():
         baseinfo_data = BaseInfoModel.objects.filter(
             appid=request.user.appid)
         for i in range(len(baseinfo_data)):
             baseinfo_data[i].delete()
     for index, row in df.iterrows():
         BaseInfoModel.objects.create(
             appid=request.user.appid,
             goods_code=str(row['商品编号']),
             sup_product_day=int(row['供应商生产周期(天)']),
             sup_intransit=int(row['供应商送货在途时间(天)']),
             loading_inspect=int(row['到货卸货和检验时间(天)']),
             total_leadtime=int(row['供应商生产周期(天)']) +
             int(row['供应商送货在途时间(天)']) + int(row['到货卸货和检验时间(天)']))
     os.remove(filename)
     return Response(FBMsg.ret())
Exemplo n.º 17
0
 def delete(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid, developer=1, is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         for i in range(len(data)):
             if Users.objects.filter(appid=request.user.appid, transaction_code=data[i]['transaction_code'], is_delete=0).exists():
                 user = Users.objects.get(transaction_code=data[i]['transaction_code'])
                 if user.developer == 1:
                     ret = FBMsg.wms_dev()
                     ret['data'] = data
                     return Response(ret)
                 if user.name == Users.objects.get(openid=request.auth, appid=request.user.appid, is_delete=0).name:
                     ret = FBMsg.wms_user_owner()
                     ret['data'] = data
                     return Response(ret)
             else:
                 ret = FBMsg.wms_err()
                 ret['data'] = data
                 return Response(ret)
         for j in range(len(data)):
             delete_data = Users.objects.filter(appid=request.user.appid, transaction_code=data[j]['transaction_code'], is_delete=0).first()
             delete_data.is_delete = 1
             delete_data.save()
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         ret = FBMsg.wms_ret()
         ret['ip'] = ip
         ret['data'] = data
         return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 18
0
 def patch(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid, developer=1, is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         try:
             if data['code'] == "1031":
                 return Response(FBMsg.err_bad())
         except:
             if ListModel.objects.filter(appid=request.user.appid, t_code=str(data['t_code']), is_delete=0).exists():
                 patch_name = ListModel.objects.get(t_code=str(data['t_code'])).name
                 if patch_name != str(data['name']):
                     if ListModel.objects.filter(appid=request.user.appid, name=str(data['name']), is_delete=0).exists():
                         ret = FBMsg.wms_same()
                         ret['data'] = data
                         return Response(ret)
                 patch_data = ListModel.objects.filter(appid=request.user.appid, t_code=str(data['t_code']), is_delete=0).first()
                 if 'name' in data:
                     patch_data.name = str(data['name'])
                 patch_data.save()
                 ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
                     'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
                 ret = FBMsg.wms_ret()
                 ret['ip'] = ip
                 ret['data'] = data
                 return Response(ret)
             else:
                 ret = FBMsg.wms_err()
                 ret['data'] = data
                 return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 19
0
 def post(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         try:
             if data['code'] == "1031":
                 return Response(FBMsg.err_bad())
         except:
             if ListModel.objects.filter(appid=request.user.appid,
                                         name=str(data['name']),
                                         is_delete=0).exists():
                 ret = FBMsg.wms_same()
                 ret['data'] = data
                 return Response(ret)
             else:
                 ListModel.objects.create(appid=request.user.appid,
                                          name=str(data['name']),
                                          province=str(data['province']),
                                          city=str(data['city']),
                                          district=str(data['district']),
                                          address=str(data['address']),
                                          manager=str(data['manager']),
                                          mobile=str(data['mobile']),
                                          t_code=Md5.md5(str(data['name'])))
                 ip = request.META.get(
                     'HTTP_X_FORWARDED_FOR') if request.META.get(
                         'HTTP_X_FORWARDED_FOR') else request.META.get(
                             'REMOTE_ADDR')
                 ret = FBMsg.wms_ret()
                 ret['ip'] = ip
                 ret['data'] = data
                 return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 20
0
 def put(self, request, format=None):
     file_obj = request.data['file']
     vip_id = Users.objects.filter(appid=request.user.appid, developer=1, is_delete=0).first().vip
     file_check = FileVipCheck.FileVipCheck(file_obj.size, vip_id)
     if file_check == "N":
         return Response(FBMsg.err_data())
     elif file_check == "Y":
         if file_obj.name.endswith('.xlsx'):
             filename = os.path.join(settings.BASE_DIR, 'media/upload/' + pathlink + '/' + request.user.appid + '.xlsx')
         elif file_obj.name.endswith('.xls'):
             filename = os.path.join(settings.BASE_DIR, 'media/upload/' + pathlink + '/' + request.user.appid + '.xls')
         else:
             return Response(FBMsg.err_data())
         with open(filename, 'wb+') as f:
             for chunk in file_obj.chunks():
                 f.write(chunk)
             f.close()
         df = pd.read_excel(filename)
         if Users.objects.filter(appid=request.user.appid).exists():
             upload_data = Users.objects.filter(appid=request.user.appid)
             for i in range(len(upload_data)):
                 upload_data[i].delete()
         for index, row in df.iterrows():
             if str(row[pathname]) == '':
                 pass
             else:
                 if Users.objects.filter(appid=request.user.appid, name=str(row[pathname]), is_delete=0).exists():
                     pass
                 else:
                     Users.objects.create(appid=request.user.appid, name=str(row[pathname]),
                                              create_name=request.user.nickname, transaction_code=Md5.md5(str(row[pathname])))
         os.remove(filename)
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         ret = FBMsg.wms_ret()
         ret['ip'] = ip
         return Response(ret)
     else:
         return Response(FBMsg.err_data())
Exemplo n.º 21
0
 def delete(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         for i in range(len(data)):
             if UserAuth.objects.filter(appid=request.user.appid,
                                        t_code=data[i]['t_code'],
                                        is_delete=0).exists():
                 pass
             else:
                 ret = FBMsg.wms_err()
                 ret['data'] = data
                 return Response(ret)
         for j in range(len(data)):
             delete_data = UserAuth.objects.filter(appid=request.user.appid,
                                                   t_code=data[j]['t_code'],
                                                   is_delete=0).first()
             delete_data.is_delete = 1
             delete_data.save()
             user_auth_change = Users.objects.filter(
                 appid=request.user.appid,
                 auth_name=delete_data.name,
                 is_delete=0)
             for k in range(len(user_auth_change)):
                 user_auth_change[k].auth_name = ''
                 user_auth_change[k].save()
         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
         ret = FBMsg.wms_ret()
         ret['ip'] = ip
         ret['data'] = data
         return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 22
0
 def post(self, request, format=None):
     file_obj = request.data['file']
     vip_id = Users.objects.get(appid=request.user.appid,
                                developer=1,
                                is_delete=0).vip
     if vip_id == 0:
         if file_obj.size >= 102400:
             return Response(FBMsg.err_data())
     elif vip_id == 4:
         if file_obj.size >= 102400:
             return Response(FBMsg.err_data())
     if file_obj.name.endswith('.xlsx'):
         filename = os.path.join(settings.BASE_DIR,
                                 'media/goods/' + request.auth + '.xlsx')
     elif file_obj.name.endswith('.xls'):
         filename = os.path.join(settings.BASE_DIR,
                                 'media/goods/' + request.auth + '.xls')
     else:
         return Response(FBMsg.err_data())
     with open(filename, 'wb+') as f:
         for chunk in file_obj.chunks():
             f.write(chunk)
         f.close()
     df = pd.read_excel(filename)
     if GoodsModel.objects.filter(appid=request.user.appid).exists():
         goods_data = GoodsModel.objects.filter(appid=request.user.appid)
         for i in range(len(goods_data)):
             goods_data[i].delete()
     for index, row in df.iterrows():
         if int(row['现有库存']) <= 0:
             on_hand_stock = 0
         else:
             on_hand_stock = int(row['现有库存'])
         GoodsModel.objects.create(appid=request.user.appid,
                                   goods_code=str(row['商品编号']),
                                   on_hand_stock=on_hand_stock)
     os.remove(filename)
     return Response(FBMsg.ret())
Exemplo n.º 23
0
 def get(self, request, *args, **kwargs):
     sort = request._request.GET.get('sort', 'note_day')
     start_date = request._request.GET.get('note_day', '')
     date_detail = start_date.split('/')
     search_day = datetime.datetime(int(date_detail[0]), int(date_detail[1]), int(date_detail[2]))
     search_day = search_day.strftime('%Y-%m-%d')
     list = models.NoteBook.objects.filter(note_day__gte=search_day, openid=request.auth,
                                           is_delete=0).order_by(sort, '-create_time')
     if request._request.GET.get('id', ''):
         list = list.filter(pk=request._request.GET.get('id', '')).order_by(sort)
     pg = page.MyPageNumberPagination()
     pg_list = pg.paginate_queryset(queryset=list, request=request, view=self)
     list_ser = serializers.NoteBookSerializers(pg_list, many=True)
     ret = FBMsg.ret()
     ret['data'] = list_ser.data
     return pg.get_paginated_response(ret)
Exemplo n.º 24
0
 def get(self, request, *args, **kwargs):
     ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
         'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
     sort = request._request.GET.get('sort', '-create_time')
     max_page = request._request.GET.get('max_page', 100)
     list = BaseInfoModel.objects.filter(
         appid=request.user.appid).order_by(sort)
     if request._request.GET.get('goods_code', ''):
         list = list.filter(goods_code__icontains=request._request.GET.get(
             'goods_code', '')).order_by(sort)
     pg = MyPageNumberPagination()
     pg_list = pg.paginate_queryset(queryset=list,
                                    request=request,
                                    view=self)
     list_ser = ListSerializers(pg_list, many=True)
     ret = FBMsg.ret()
     ret['ip'] = ip
     ret['data'] = list_ser.data
     ret['totlepage'] = math.ceil(list.count() / int(max_page))
     return pg.get_paginated_response(ret)
Exemplo n.º 25
0
 def post(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid, developer=1, is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         try:
             if data['code'] == "1031":
                 return Response(FBMsg.err_bad())
         except:
             if ListModel.objects.filter(appid=request.user.appid, name=str(data['name']), is_delete=0).exists():
                 ret = FBMsg.wms_same()
                 ret['data'] = data
                 return Response(ret)
             else:
                 if binsize.models.ListModel.objects.filter(appid=request.user.appid, name=str(data['bin_size']),
                                                            is_delete=0).exists():
                     if property.models.ListModel.objects.filter(appid=request.user.appid, name=str(data['bin_property']),
                                                            is_delete=0).exists():
                         create_name = Users.objects.filter(openid=request.auth, appid=request.user.appid,
                                                            is_delete=0).first().name
                         ListModel.objects.create(appid=request.user.appid, name=str(data['name']),
                                                  bin_size=str(data['bin_size']),
                                                  bin_property=str(data['bin_property']),
                                                  create_name=create_name, t_code=Md5.md5(str(data['name'])))
                         ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
                             'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
                         ret = FBMsg.wms_ret()
                         ret['ip'] = ip
                         ret['data'] = data
                         return Response(ret)
                     else:
                         ret = FBMsg.wms_binproperty()
                         ret['data'] = data
                         return Response(ret)
                 else:
                     ret = FBMsg.wms_binsize()
                     ret['data'] = data
                     return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 26
0
def captcha(request):
    foo = ['a', 'b']
    data = {}
    mode = random.choice(foo)
    if mode == 'a':
        num1 = random.randint(10, 20)
        num2 = random.randint(0, 10)
        nummode = "-"
        data['result'] = num1 - num2
    elif mode == 'b':
        num1 = random.randint(0, 10)
        num2 = random.randint(0, 10)
        nummode = "+"
        data['result'] = num1 + num2
    data['num1'] = num1
    data['num2'] = num2
    data['nummode'] = nummode
    data['numrandom'] = random.randint(0, 20)
    while True:
        data['numrandom'] = random.randint(0, 20)
        if data['numrandom'] != data['result']:
            ret = FBMsg.ret()
            ret['data'] = data
            return JsonResponse(ret)
Exemplo n.º 27
0
 def post(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         try:
             if data['code'] == "1031":
                 return Response(FBMsg.err_bad())
         except:
             if DetailModel.objects.filter(appid=request.user.appid,
                                           t_code=str(data[0]['t_code']),
                                           is_delete=0).exists():
                 up_data = DetailModel.objects.filter(
                     t_code=str(data[0]['t_code'])).first()
                 bin_data = binset.models.ListModel.objects.filter(
                     appid=request.user.appid,
                     name=str(data[0]['bin']),
                     is_delete=0).first()
                 property_data = property.models.ListModel.objects.filter(
                     appid=request.user.appid,
                     name=bin_data.bin_property).first()
                 up_data.up_qty = up_data.up_qty - int(
                     data[0]['finish_qty'])
                 goods_stock = stocklist.models.ListModel.objects.filter(
                     appid=request.user.appid,
                     name=up_data.goods_code,
                     goods_name=up_data.goods_name,
                 ).first()
                 if property_data.property_code == 1:
                     up_data.actual_up_qty = up_data.actual_up_qty - int(
                         data[0]['finish_qty'])
                     goods_stock.onhand_stock = goods_stock.onhand_stock + int(
                         data[0]['finish_qty'])
                     goods_stock.can_order_stock = goods_stock.can_order_stock + int(
                         data[0]['finish_qty'])
                     goods_stock.sort_stock = goods_stock.sort_stock - int(
                         data[0]['finish_qty'])
                     if up_data.up_qty > 0:
                         if up_data.actual_up_qty >= 0:
                             up_data.save()
                             goods_stock.save()
                             bin_data.bin_empty = 1
                             bin_data.save()
                             stockbinlist.models.ListModel.objects.create(
                                 appid=request.user.appid,
                                 name=str(data[0]['bin']),
                                 goods_code=up_data.goods_code,
                                 goods_name=up_data.goods_name,
                                 goods_qty=int(data[0]['finish_qty']),
                                 can_order_stock=int(data[0]['finish_qty']),
                                 bin_property=bin_data.bin_property,
                                 bin_size=bin_data.bin_size,
                                 po_name=up_data.name,
                                 t_code=Md5.md5(data[0]['t_code']))
                         else:
                             ret = FBMsg.wms_po_qty_up_more()
                             ret['data'] = data
                             return Response(ret)
                     elif up_data.up_qty == 0:
                         if up_data.actual_up_qty >= 0:
                             up_data.save()
                             goods_stock.save()
                             bin_data.bin_empty = 1
                             bin_data.save()
                             stockbinlist.models.ListModel.objects.create(
                                 appid=request.user.appid,
                                 name=str(data[0]['bin']),
                                 goods_code=up_data.goods_code,
                                 goods_name=up_data.goods_name,
                                 goods_qty=int(data[0]['finish_qty']),
                                 can_order_stock=int(data[0]['finish_qty']),
                                 bin_property=bin_data.bin_property,
                                 bin_size=bin_data.bin_size,
                                 po_name=up_data.name,
                                 t_code=Md5.md5(data[0]['t_code']))
                             if DetailModel.objects.filter(
                                     appid=request.user.appid,
                                     name=up_data.name,
                                     up_qty__gt=0,
                                     is_delete=0).exists():
                                 pass
                             else:
                                 po_detail_status = DetailModel.objects.filter(
                                     appid=request.user.appid,
                                     name=up_data.name,
                                     is_delete=0)
                                 po_list_status = ListModel.objects.filter(
                                     appid=request.user.appid,
                                     name=up_data.name,
                                     is_delete=0).first()
                                 for i in range(len(po_detail_status)):
                                     po_detail_status[i].po_status = 5
                                     po_detail_status[i].save()
                                 po_list_status.po_status = 5
                                 po_list_status.save()
                         else:
                             ret = FBMsg.wms_po_qty_up_more()
                             ret['data'] = data
                             return Response(ret)
                     else:
                         ret = FBMsg.wms_po_qty_all_up_more()
                         ret['data'] = data
                         return Response(ret)
                 elif property_data.property_code == 4:
                     up_data.damage_up_qty = up_data.damage_up_qty - int(
                         data[0]['finish_qty'])
                     goods_stock.damage_stock = goods_stock.damage_stock + int(
                         data[0]['finish_qty'])
                     if up_data.up_qty > 0:
                         if up_data.damage_up_qty >= 0:
                             up_data.save()
                             goods_stock.save()
                             bin_data.bin_empty = 1
                             bin_data.save()
                             stockbinlist.models.ListModel.objects.create(
                                 appid=request.user.appid,
                                 name=str(data[0]['bin']),
                                 goods_code=up_data.goods_code,
                                 goods_name=up_data.goods_name,
                                 goods_qty=int(data[0]['finish_qty']),
                                 bin_property=bin_data.bin_property,
                                 bin_size=bin_data.bin_size,
                                 po_name=up_data.name,
                                 t_code=Md5.md5(data[0]['t_code']))
                         else:
                             ret = FBMsg.wms_po_qty_dup_more()
                             ret['data'] = data
                             return Response(ret)
                     elif up_data.up_qty == 0:
                         if up_data.damage_up_qty >= 0:
                             up_data.save()
                             goods_stock.save()
                             bin_data.bin_empty = 1
                             bin_data.save()
                             stockbinlist.models.ListModel.objects.create(
                                 appid=request.user.appid,
                                 name=str(data[0]['bin']),
                                 goods_code=up_data.goods_code,
                                 goods_name=up_data.goods_name,
                                 goods_qty=int(data[0]['finish_qty']),
                                 bin_property=bin_data.bin_property,
                                 bin_size=bin_data.bin_size,
                                 po_name=up_data.name,
                                 t_code=Md5.md5(data[0]['t_code']))
                             if DetailModel.objects.filter(
                                     appid=request.user.appid,
                                     name=up_data.name,
                                     up_qty__gt=0,
                                     is_delete=0).exists():
                                 pass
                             else:
                                 po_detail_status = DetailModel.objects.filter(
                                     appid=request.user.appid,
                                     name=up_data.name,
                                     is_delete=0)
                                 po_list_status = ListModel.objects.filter(
                                     appid=request.user.appid,
                                     name=up_data.name,
                                     is_delete=0).first()
                                 for i in range(len(po_detail_status)):
                                     po_detail_status[i].po_status = 5
                                     po_detail_status[i].save()
                                 po_list_status.po_status = 5
                                 po_list_status.save()
                         else:
                             ret = FBMsg.wms_po_qty_dup_more()
                             ret['data'] = data
                             return Response(ret)
                     else:
                         ret = FBMsg.wms_po_qty_all_up_more()
                         ret['data'] = data
                         return Response(ret)
             else:
                 ret = FBMsg.wms_po_empty()
                 ret['data'] = data
                 return Response(ret)
             ip = request.META.get(
                 'HTTP_X_FORWARDED_FOR') if request.META.get(
                     'HTTP_X_FORWARDED_FOR') else request.META.get(
                         'REMOTE_ADDR')
             ret = FBMsg.wms_ret()
             ret['ip'] = ip
             ret['data'] = data
             return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 28
0
 def patch(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip())
     elif vip_check == "Y":
         data = DataSolve.datasolve(request)
         try:
             if data['code'] == "1031":
                 return Response(FBMsg.err_bad())
         except:
             ip = request.META.get(
                 'HTTP_X_FORWARDED_FOR') if request.META.get(
                     'HTTP_X_FORWARDED_FOR') else request.META.get(
                         'REMOTE_ADDR')
             po_data = DetailModel.objects.filter(appid=request.user.appid,
                                                  t_code=str(
                                                      data[0]['t_code']),
                                                  is_delete=0).first().name
             po_status_data = ListModel.objects.filter(
                 appid=request.user.appid, name=po_data,
                 is_delete=0).first()
             if po_status_data.po_status == 3:
                 po_status_data.po_status = 4
                 po_status_data.save()
             for i in range(len(data)):
                 patch_data = DetailModel.objects.filter(
                     appid=request.user.appid,
                     t_code=str(data[i]['t_code']),
                     is_delete=0).first()
                 patch_data.arrive_qty = int(data[i]['damage_qty']) + int(
                     data[i]['actual_qty'])
                 more_qty = patch_data.arrive_qty - patch_data.po_qty
                 if more_qty <= 0:
                     patch_data.more_qty = 0
                 else:
                     patch_data.more_qty = more_qty
                 patch_data.damage_qty = int(data[i]['damage_qty'])
                 patch_data.damage_up_qty = int(data[i]['damage_qty'])
                 patch_data.actual_qty = int(data[i]['actual_qty'])
                 patch_data.actual_up_qty = int(data[i]['actual_qty'])
                 patch_data.up_qty = patch_data.arrive_qty
                 if int(data[i]['damage_qty']) + int(
                         data[i]['actual_qty']) < patch_data.po_qty:
                     patch_data.shortage_qty = patch_data.po_qty - (
                         int(data[i]['damage_qty']) +
                         int(data[i]['actual_qty']))
                 else:
                     patch_data.shortage_qty = 0
                 patch_data.po_status = 4
                 stock_list_data = stocklist.models.ListModel.objects.filter(
                     appid=request.user.appid,
                     name=patch_data.goods_code,
                     is_delete=0).first()
                 stock_list_data.pre_sort_stock = stock_list_data.pre_sort_stock - patch_data.arrive_qty
                 stock_list_data.sort_stock = stock_list_data.sort_stock + patch_data.arrive_qty
                 stock_list_data.save()
                 patch_data.save()
             ret = FBMsg.wms_ret()
             ret['ip'] = ip
             ret['data'] = data
             return Response(ret)
     else:
         return Response(FBMsg.wms_vip())
Exemplo n.º 29
0
 def get(self, request, *args, **kwargs):
     vip_id = Users.objects.filter(appid=request.user.appid,
                                   developer=1,
                                   is_delete=0).first().vip
     vip_check = VipCheck.VipCheck(vip_id)
     if vip_check == "N":
         return Response(FBMsg.wms_vip_get())
     elif vip_check == "Y":
         if request._request.GET.get('getfile', ''):
             if str(request._request.GET.get('getfile', '')) == "1":
                 file_data = DetailModel.objects.filter(
                     appid=request.user.appid, is_delete=0)
                 file_detail1 = []
                 file_detail2 = []
                 file_detail3 = []
                 file_detail4 = []
                 file_detail5 = []
                 filepath = os.path.join(
                     settings.BASE_DIR, 'media/file/' + pathlink + '/' +
                     request.user.appid + '.xlsx')
                 for i in range(len(file_data)):
                     file_detail1.append(file_data[i].name)
                     file_detail2.append(file_data[i].po_status)
                     file_detail3.append(file_data[i].create_name)
                     file_detail4.append(file_data[i].create_time.strftime(
                         "%Y-%m-%d %H:%M:%S"))
                     file_detail5.append(
                         file_data[i].last_update_time.strftime(
                             "%Y-%m-%d %H:%M:%S"))
                 df = pd.DataFrame({
                     pathname: file_detail1,
                     '订单状态': file_detail2,
                     '创建人': file_detail3,
                     '创建时间': file_detail4,
                     '最后更新时间': file_detail5
                 })
                 dir_path = os.path.join(settings.BASE_DIR,
                                         'media/file/' + pathlink + '/')
                 if os.path.exists(dir_path):
                     pass
                 else:
                     os.makedirs(dir_path)
                 if os.path.isfile(filepath):
                     os.remove(filepath)
                 else:
                     pass
                 df.to_excel(filepath,
                             sheet_name='sheet1',
                             startcol=0,
                             index=False)
                 file = open(filepath, 'rb')
                 response = FileResponse(file)
                 response['Content-Type'] = 'application/octet-stream'
                 response[
                     'Content-Disposition'] = 'attachment;filename="%s.xlsx"' % pathlink
                 return response
             else:
                 ret = FBMsg.wms_errfile()
                 return Response(ret)
         else:
             sort = request._request.GET.get('sort', '-create_time')
             max_page = request._request.GET.get('max_page', 100)
             list = DetailModel.objects.filter(appid=request.user.appid,
                                               is_delete=0).order_by(sort)
             if request._request.GET.get('po_number', ''):
                 list = list.filter(
                     name__icontains=request._request.GET.get(
                         'po_number', '')).order_by(sort)
             if request._request.GET.get('po_status', ''):
                 list = list.filter(
                     po_status=int(request._request.GET.get(
                         'po_status', ''))).order_by(sort)
             if request._request.GET.get('supplier', ''):
                 list = list.filter(
                     supplier__icontains=request._request.GET.get(
                         'supplier', '')).order_by(sort)
             if request._request.GET.get('sorted', ''):
                 list = list.filter(up_qty__gt=int(
                     request._request.GET.get('sorted', ''))).order_by(sort)
             if request._request.GET.get('shortage', ''):
                 list = list.filter(shortage_qty__gt=int(
                     request._request.GET.get('shortage', ''))).order_by(
                         sort)
             if request._request.GET.get('damage', ''):
                 list = list.filter(damage_qty__gt=int(
                     request._request.GET.get('damage', ''))).order_by(sort)
             if request._request.GET.get('more', ''):
                 list = list.filter(more_qty__gt=int(
                     request._request.GET.get('more', ''))).order_by(sort)
             if request._request.GET.get('create_name', ''):
                 list = list.filter(
                     create_name__icontains=request._request.GET.get(
                         'create_name', '')).order_by(sort)
             if request._request.GET.get('t_code', ''):
                 list = list.filter(t_code=request._request.GET.get(
                     't_code', '')).order_by(sort)
             if request._request.GET.get('date1', ''):
                 try:
                     start_date = request._request.GET.get('date1', '')
                     date = [int(x) for x in start_date.split('/')]
                     new = datetime.datetime(date[0], date[1], date[2])
                     start_date = new.strftime('%Y-%m-%d')
                     if request._request.GET.get('date2', ''):
                         date_end = request._request.GET.get('date2', '')
                         delta = datetime.timedelta(days=1)
                         date = [int(x) for x in date_end.split('/')]
                         old = datetime.datetime(date[0], date[1], date[2])
                         end_date = (old + delta).strftime('%Y-%m-%d')
                     else:
                         today = datetime.date.today()
                         delta = datetime.timedelta(days=1)
                         end_date = (today + delta).strftime('%Y-%m-%d')
                         date = [int(x) for x in end_date.split('-')]
                         old = datetime.datetime(date[0], date[1], date[2])
                     if (old - new).days < 0:
                         return Response(FBMsg.wms_time())
                     else:
                         list = list.filter(
                             create_time__range=[start_date, end_date
                                                 ]).order_by(sort)
                 except:
                     pass
             if request._request.GET.get('udate1', ''):
                 try:
                     start_date = request._request.GET.get('udate1', '')
                     date = [int(x) for x in start_date.split('/')]
                     new = datetime.datetime(date[0], date[1], date[2])
                     start_date = new.strftime('%Y-%m-%d')
                     if request._request.GET.get('udate2', ''):
                         date_end = request._request.GET.get('udate2', '')
                         delta = datetime.timedelta(days=1)
                         date = [int(x) for x in date_end.split('/')]
                         old = datetime.datetime(date[0], date[1], date[2])
                         end_date = (old + delta).strftime('%Y-%m-%d')
                     else:
                         today = datetime.date.today()
                         delta = datetime.timedelta(days=1)
                         end_date = (today + delta).strftime('%Y-%m-%d')
                         date = [int(x) for x in end_date.split('-')]
                         old = datetime.datetime(date[0], date[1], date[2])
                     if (old - new).days < 0:
                         return Response(FBMsg.wms_time())
                     else:
                         list = list.filter(
                             last_update_time__range=[start_date, end_date
                                                      ]).order_by(sort)
                 except:
                     pass
             pg = MyPageNumberPagination()
             pg_list = pg.paginate_queryset(queryset=list,
                                            request=request,
                                            view=self)
             list_ser = ListSerializers(pg_list, many=True)
             ip = request.META.get(
                 'HTTP_X_FORWARDED_FOR') if request.META.get(
                     'HTTP_X_FORWARDED_FOR') else request.META.get(
                         'REMOTE_ADDR')
             bin_list = binset.models.ListModel.objects.filter(
                 appid=request.user.appid, is_delete=0).order_by('name')
             bin_list_ser = BinListSerializers(bin_list, many=True)
             ret = FBMsg.ret()
             ret['ip'] = ip
             ret['data'] = list_ser.data
             ret['totlepage'] = math.ceil(list.count() / int(max_page))
             ret['bin_list'] = bin_list_ser.data
             return pg.get_paginated_response(ret)
     else:
         return Response(FBMsg.wms_vip_get())
Exemplo n.º 30
0
 def post(self, request, format=None):
     if ShippingModel.objects.filter(appid=request.user.appid).exists():
         if GoodsModel.objects.filter(appid=request.user.appid).exists():
             if BaseInfoModel.objects.filter(appid=request.user.appid).exists():
                 contacts = ShippingModel.objects.filter(appid=request.user.appid)
                 goods_code = contacts.values('goods_code').distinct()
                 data = []
                 for i in range(len(goods_code)):
                     if GoodsModel.objects.filter(appid=request.user.appid, goods_code=goods_code[i]['goods_code']).exists():
                         if BaseInfoModel.objects.filter(appid=request.user.appid, goods_code=goods_code[i]['goods_code']).exists():
                             on_hand_stock = GoodsModel.objects.filter(appid=request.user.appid,
                                                                       goods_code=goods_code[i][
                                                                           'goods_code']).first().on_hand_stock
                             total_leadtime = BaseInfoModel.objects.filter(appid=request.user.appid,
                                                                           goods_code=goods_code[i][
                                                                               'goods_code']).first().total_leadtime
                             if on_hand_stock == 0:
                                 today = datetime.date.today()
                                 delta1 = datetime.timedelta(days=29)
                                 delta2 = datetime.timedelta(days=59)
                                 delta3 = datetime.timedelta(days=89)
                                 end_date1 = (today - delta1).strftime('%Y-%m-%d')
                                 end_date2 = (today - delta2).strftime('%Y-%m-%d')
                                 end_date3 = (today - delta3).strftime('%Y-%m-%d')
                                 plan_date = today.strftime('%Y-%m-%d')
                                 shipping_data1 = contacts.filter(goods_code=goods_code[i]['goods_code'], shipping_time__range=[end_date1, today]).aggregate(
                                     Sum('shipping_qty'))
                                 shipping_data2 = contacts.filter(goods_code=goods_code[i]['goods_code'], shipping_time__range=[end_date2, today]).aggregate(
                                     Sum('shipping_qty'))
                                 shipping_data3 = contacts.filter(goods_code=goods_code[i]['goods_code'], shipping_time__range=[end_date3, today]).aggregate(
                                     Sum('shipping_qty'))
                                 analyst = {
                                     "goods_code": goods_code[i]['goods_code'],
                                     "shipping_data1": shipping_data1['shipping_qty__sum'],
                                     "shipping_data2": shipping_data2['shipping_qty__sum'],
                                     "shipping_data3": shipping_data3['shipping_qty__sum'],
                                     "plan_date1": plan_date,
                                     "plan_date2": plan_date,
                                     "plan_date3": plan_date,
                                     "plan_date4": 0,
                                     "oos_lv": "已经断货"
                                 }
                                 data.append(analyst)
                             else:
                                 today = datetime.date.today()
                                 delta1 = datetime.timedelta(days=29)
                                 delta2 = datetime.timedelta(days=59)
                                 delta3 = datetime.timedelta(days=89)
                                 end_date1 = (today - delta1).strftime('%Y-%m-%d')
                                 end_date2 = (today - delta2).strftime('%Y-%m-%d')
                                 end_date3 = (today - delta3).strftime('%Y-%m-%d')
                                 shipping_data1 = contacts.filter(goods_code=goods_code[i]['goods_code'], shipping_time__range=[end_date1, today]).aggregate(
                                     Sum('shipping_qty'))
                                 shipping_data2 = contacts.filter(goods_code=goods_code[i]['goods_code'], shipping_time__range=[end_date2, today]).aggregate(
                                     Sum('shipping_qty'))
                                 shipping_data3 = contacts.filter(goods_code=goods_code[i]['goods_code'], shipping_time__range=[end_date3, today]).aggregate(
                                     Sum('shipping_qty'))
                                 avg_qty1 = shipping_data1['shipping_qty__sum'] / 30
                                 avg_qty2 = shipping_data2['shipping_qty__sum'] / 60
                                 avg_qty3 = shipping_data3['shipping_qty__sum'] / 90
                                 avg_qty4 = (avg_qty1 + avg_qty2 + avg_qty3) / 3
                                 stock_check1 = int(on_hand_stock / avg_qty1)
                                 stock_check2 = int(on_hand_stock / avg_qty2)
                                 stock_check3 = int(on_hand_stock / avg_qty3)
                                 stock_check4 = int(on_hand_stock / avg_qty4)
                                 plan_day1 = datetime.timedelta(days=stock_check1)
                                 plan_day2 = datetime.timedelta(days=stock_check2)
                                 plan_day3 = datetime.timedelta(days=stock_check3)
                                 plan_day4 = datetime.timedelta(days=stock_check4)
                                 plan_date1 = (today + plan_day1).strftime('%Y-%m-%d')
                                 plan_date2 = (today + plan_day2).strftime('%Y-%m-%d')
                                 plan_date3 = (today + plan_day3).strftime('%Y-%m-%d')
                                 oos_notice = plan_day4.days / total_leadtime
                                 if oos_notice >= 3:
                                     oos_lv = "库存过多"
                                 elif 3 > oos_notice >= 2:
                                     oos_lv = "库存充足"
                                 elif 2 > oos_notice >= 1:
                                     oos_notice = plan_day4.days / (total_leadtime + 7)
                                     if oos_notice > 1:
                                         oos_lv = "库存正常"
                                     elif oos_notice <= 1:
                                         oos_lv = "断货风险"
                                     else:
                                         oos_lv = "断货风险极大"
                                 else:
                                     oos_lv = "断货风险极大"
                                 analyst = {
                                     "goods_code": goods_code[i]['goods_code'],
                                     "shipping_data1": shipping_data1['shipping_qty__sum'],
                                     "shipping_data2": shipping_data2['shipping_qty__sum'],
                                     "shipping_data3": shipping_data3['shipping_qty__sum'],
                                     "plan_date1": plan_date1,
                                     "plan_date2": plan_date2,
                                     "plan_date3": plan_date3,
                                     "plan_date4": plan_day4.days,
                                     "oos_lv": oos_lv
                                 }
                                 data.append(analyst)
                                 # end_date = (today + delta).strftime('%Y-%m-%d')
                                 # date = [int(x) for x in date_end.split('-')]
                                 # old = datetime.datetime(date[0], date[1], date[2])
                                 # end_date = (old + delta).strftime('%Y-%m-%d')
                         else:
                             continue
                     else:
                         continue
                 ret = FBMsg.ret()
                 ret['data'] = data
                 return Response(ret)
             else:
                 return Response(FBMsg.err_req_baseinfo_list())
         else:
             return Response(FBMsg.err_req_stock_list())
     else:
         return Response(FBMsg.err_req_shipping_list())