Files
Elvis.Shi 355dfbefe6 V 2.1.3
Former-commit-id: 710132ebaf418af1ef540e2cda73537b6a38a032 [formerly 815cbd4f0709b5d061392b4ab0caab90a7e25e97] [formerly 93affb91a67ea41c7cc39ee6eafa091629549b58 [formerly a489e2a50e18173a7c2862140f0f0093dcf381c5]] [formerly eb7c696e46d0de6cd07607f1270536f350d99501 [formerly a395cdf8535e8ee8e7d133ac4e1d34c5568a47de] [formerly 1f2edad23658f9919b457ea62610956e7764dbc0 [formerly 4b612ae899e10849e74d87bb65d4354001fe60b4]]] [formerly f0f9d2bc4eb1b1c23df4fd48c51f60cbe6646c84 [formerly 43a998c7e2cc1a6c293cc297d1eb7819dca16934]] [formerly 9bb0f2224b4bc7eb0c31f98e71d34dbaeddc02ca [formerly d1415112ccb6daebee059aa5a83887feb594eca9] [formerly 9bb0f2224b4bc7eb0c31f98e71d34dbaeddc02ca [formerly d1415112ccb6daebee059aa5a83887feb594eca9] [formerly 9d2ff6e436769c52c51fe92373a2837cce7639de [formerly c6ba81a118e6ec0d884196e4404a9ffc15922e21]]] [formerly f0f9d2bc4eb1b1c23df4fd48c51f60cbe6646c84 [formerly 43a998c7e2cc1a6c293cc297d1eb7819dca16934] [formerly f0f9d2bc4eb1b1c23df4fd48c51f60cbe6646c84 [formerly 43a998c7e2cc1a6c293cc297d1eb7819dca16934] [formerly 882094cc7f2e1482667e8a162c97d2418052914f [formerly a2484f1e7d214480fc545f6eb375296b80003bf1]]]]] [formerly 0aacfa5ec62c00b7879353d274af2477f2d1057c [formerly ef38218f0ccb7394e14e713e7216214cf1276c3f] [formerly 0aacfa5ec62c00b7879353d274af2477f2d1057c [formerly ef38218f0ccb7394e14e713e7216214cf1276c3f] [formerly 6eaa3a6c3b6405c4ecf33f2298ebe9ad942a588f [formerly 5b54b721c3c117c4fe69297d30daba41fb9e5295]]] [formerly 14de90134656d66ac6ffdb92e106500657feedd9 [formerly ef58d026e05235fb22e5057a7f7c6ec47a52f4b6]] [formerly 4d66cfe753f254ca67419d7bdb57c171a5cea3f5 [formerly 115b821539b9069a867afc973cca7171533c2914] [formerly 4d66cfe753f254ca67419d7bdb57c171a5cea3f5 [formerly 115b821539b9069a867afc973cca7171533c2914] [formerly 49504cb2a4cfdfa6f06be81a34a7bbbadc822291 [formerly 09e0c730aed4f4549c097f1de85e6fef9c45a9a1]]] [formerly 14de90134656d66ac6ffdb92e106500657feedd9 [formerly ef58d026e05235fb22e5057a7f7c6ec47a52f4b6] [formerly 14de90134656d66ac6ffdb92e106500657feedd9 [formerly ef58d026e05235fb22e5057a7f7c6ec47a52f4b6] [formerly e37c42034316ec2587580987e1c0533630839d4c [formerly 7447825f516a6d00d531cd5a2715ba45a50b0a9b [formerly f30653e98acb7e741c669cdb234d90d9aac5f2cf] [formerly 3f491793fc7811a3a587bb9e0bf47ed0d3071cf2 [formerly f3c5597e2368ee488e490c9e4fc808ddccf6cca3]] [formerly 81cadd6db031084e9644d0f8a843a683237d3263 [formerly d9eb4719e24b30f734cc473039211bff269db0cb] [formerly 44ee6df8132dc0f55567d8a15346d9e69d0861fa]] [formerly 44ee6df8132dc0f55567d8a15346d9e69d0861fa [formerly 81d098dc80297196e75aa7a1b50e1a438af282a5]] [formerly c8f3cdf03f472b9bc8669173060b33c02c5d8978 [formerly 44ee6df8132dc0f55567d8a15346d9e69d0861fa [formerly 81d098dc80297196e75aa7a1b50e1a438af282a5] [formerly c8f3cdf03f472b9bc8669173060b33c02c5d8978 [formerly 11aa70bc956f1713927a815ef063e34ce51eba2f [formerly fa7d83e17f92e4dfc5f473a3aa087fd3b27b7ab9] [formerly c8f3cdf03f472b9bc8669173060b33c02c5d8978 [formerly b5e22373b2]]]]]]]]]]]]
Former-commit-id: 195193d1f4397e6b5ff7f62d011fe8a966878f2e [formerly 05356a5c180ad26aded4d3dc35f952e499162c3e] [formerly 53616636866618ab1613ea39dc3e6b1a91e419b2 [formerly ee71d5853fd2cb8a797ba0285b3fcf782a894571]] [formerly 2269a482910ff8166f43517b21c0a4dfc244a892 [formerly 68d81bdf94fea8ac841cbf5d3f5c212499338165] [formerly d915de7428cbaefbf77c8a0bc18d5192d906295c [formerly fff98ea75fc9b92af4b29989be988f24263ccf6d]]] [formerly 8046eb3ff01df83b76a739d0e0acbb4a2969490f [formerly ec6eee9a8f8230c3170b9a601377edb199f41a3a]] [formerly 4f09faec44bee906c26e0a0149f5c01f137e7342 [formerly 44040e2e836d45b525d2c95902024f1cf83dff01] [formerly 4f09faec44bee906c26e0a0149f5c01f137e7342 [formerly 44040e2e836d45b525d2c95902024f1cf83dff01] [formerly 389a0275bcf031cdfe4d228c9081da06c41443ad [formerly f9659235d6f31d603d63622b06fb96932d9aaa1b]]] [formerly 8046eb3ff01df83b76a739d0e0acbb4a2969490f [formerly ec6eee9a8f8230c3170b9a601377edb199f41a3a] [formerly 8046eb3ff01df83b76a739d0e0acbb4a2969490f [formerly ec6eee9a8f8230c3170b9a601377edb199f41a3a] [formerly 3cc35de39c466500c6412ce81bad2b5dd9c874ab [formerly 6eb491686be74f7e0bdc97866be772259ca31b5c]]]]]
Former-commit-id: 0299acfe8ebebf061aeb88f8dd8c5fb6dbc3fbd6 [formerly 02193e0e2092fa0cca39c92a4c65a4c4a2436d9f] [formerly 0299acfe8ebebf061aeb88f8dd8c5fb6dbc3fbd6 [formerly 02193e0e2092fa0cca39c92a4c65a4c4a2436d9f] [formerly 9fc8a024de977c7650912150582e0ec12c181b17 [formerly a30f4efc5ae5951cc2ad91106b2f62d5add47c61]]] [formerly 9a351e27a8954996584c86d69b170e1fd0629c7e [formerly 409b8b0a168c7e891f12e1677ced43866f334924] [formerly 7467168a44b436c3a3fea6d7b93d0adc8a6ce49c [formerly 0f6f03018b29257f048557a20bba63fe97ad0f65]] [formerly 7467168a44b436c3a3fea6d7b93d0adc8a6ce49c [formerly 0f6f03018b29257f048557a20bba63fe97ad0f65] [formerly 29d3047970f8c94bc6df6e9623aff8e7b67db092 [formerly 21cf72db4456f82fc322db1b201add1634f89cda]]]]
Former-commit-id: 9a351e27a8954996584c86d69b170e1fd0629c7e [formerly 409b8b0a168c7e891f12e1677ced43866f334924] [formerly 9a351e27a8954996584c86d69b170e1fd0629c7e [formerly 409b8b0a168c7e891f12e1677ced43866f334924] [formerly 7467168a44b436c3a3fea6d7b93d0adc8a6ce49c [formerly 0f6f03018b29257f048557a20bba63fe97ad0f65]]]
Former-commit-id: 103391802bc7fd77e58325a67a0d57d3ef040c07 [formerly b79267c743d1cbc2ff9bb668e19f9ccf486d1a91] [formerly 582f764db5fa461236e9b7586d8aefd7674c7fcf [formerly 07c55548bb1cd250093f3d86c6624f59e6b5c145]]
Former-commit-id: 0861effa93535c25ef6fd11c18152d23926b1f2a [formerly adada0022bce98c7672dcfbe45f64e77930d6f18]
Former-commit-id: 757fe374464916e059512d687702e8758a619871
Former-commit-id: ef125af06a88fa46995e1d7117b10b36673a4597 [formerly d374629df51c3fb9f17055db47c126d901474e46]
Former-commit-id: 8b3b07f7c7fcb90cc377cc4420cf77dd074911cf
Former-commit-id: 2bf47b8be0 [formerly 9cb477b490fc0cd80bc5d33c2ef16a69a301212e] [formerly 7e6e1613e16b642ed06b14154ffe12865b75d7ef [formerly 64469b896f1961e255615c08905fa4b389e90570]] [formerly 541cb693f9cb21240e1a04407a3597ba5bc1ffe6] [formerly c26ebab1fe2f58fd3627a97d026875957349eb24 [formerly bf85a742c75aba86b8571ecb3f14712406b21270 [formerly 0a37f8c2c23041a8fb5b635ed6e2c7003e711741] [formerly ec033efbef86026d93383b797f3ceeb42e0ec924 [formerly 9ca528bd6bf7aaf2271df25eb2d9274395c22c44]]]]
Former-commit-id: b85fdda276646f7cfc602ef08c44b0ab7f32db12 [formerly fe52d269b63215da57c6f9729cd48a9a8b922127 [formerly e67dd0308b172480e347aa908f35caeb3dad604d] [formerly b3ad684c1097da55a194c521cda9975278ac7d4b [formerly 57a4ea7ba88c5a8b1d4eebf88277fde9d5310bc1]]]
Former-commit-id: 3625614f3bc56556781e425bfe885d81756c38cd
Former-commit-id: 9f07ab8c5b13e6c114b8b3feaf4e502c62cab35f [formerly 6d30bced7f6a1e7de68e364d51dd829fe912ac73]
Former-commit-id: d144c1f2d0f7f2048e28040554771db0079f3ead
2022-04-03 09:49:11 +08:00

203 lines
7.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from rest_framework import viewsets
from asn.models import AsnDetailModel
from dn.models import DnDetailModel
from asn import serializers as asnserializers
from dn import serializers as dnserializers
from utils.page import MyPageNumberPagination
from utils.datasolve import sumOfList
from utils.fbmsg import FBMsg
from utils.md5 import Md5
from rest_framework.filters import OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.response import Response
from asn.filter import AsnDetailFilter
from dn.filter import DnDetailFilter
from rest_framework.exceptions import APIException
from django.shortcuts import render
from dateutil.relativedelta import relativedelta
from django.db.models.functions import TruncMonth,TruncYear,ExtractDay,ExtractMonth
from django.db.models import Count
from django.db import connection
from django.db.models import Q
from django.db.models import Sum
import re
from django.utils import timezone
class ReceiptsViewSet(viewsets.ModelViewSet):
"""
list:
Response a data listall
"""
pagination_class = None
filter_backends = [DjangoFilterBackend, OrderingFilter, ]
ordering_fields = ['id', "create_time", "update_time", ]
filter_class = AsnDetailFilter
def get_project(self):
try:
id = self.kwargs.get('pk')
return id
except:
return None
def get_queryset(self):
id = self.get_project()
if self.request.user:
if id is None:
return AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_status__gte=4,
create_time__gte=timezone.now().date() - relativedelta(days=14),
is_delete=False)
else:
return AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_status__gte=4,
create_time__gte=timezone.now().date() - relativedelta(days=14),
id=id, is_delete=False)
else:
return AsnDetailModel.objects.none()
def get_serializer_class(self):
if self.action in ['list']:
return asnserializers.ASNDetailGetSerializer
else:
return self.http_method_not_allowed(request=self.request)
def notice_lang(self):
lang = self.request.META.get('HTTP_LANGUAGE')
return lang
def list(self, request, *args, **kwargs):
qs = self.get_queryset()
context = {}
dataset = {}
dimensions = ['product']
source = []
series = []
bar_charts = {
"type": 'bar',
"barWidth": '4%',
"barGap": '60%',
"barCategoryGap": '10%',
"itemStyle": {
"normal": {
"label": {
"show": "true",
"position": "top"
}
}
}
}
receipt_res = qs.annotate(month=ExtractMonth('create_time'), day=ExtractDay('create_time')) \
.values('month', 'day').order_by('month', 'day').annotate(number=Sum('goods_cost'))
# qty_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_qty'))
# rank_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_cost'))
receipt_res_dict = {
}
# qty_res_dict = {
# }
# rank_res_dict = {
# }
for i in receipt_res:
series.append(bar_charts)
dimensions.append("%s-%s" % (i['month'], i['day']))
receipt_res_dict.update({"%s-%s" % (i['month'], i['day']): round(i['number'], 2)})
# for i in qty_res:
# qty_res_dict.update({i['goods_code']: i['number']})
# for i in rank_res:
# rank_res_dict.update({i['goods_code']: i['number']})
source.append(receipt_res_dict)
# data_list.append(qty_res_dict)
# data_list.append(rank_res_dict)
dataset['source'] = source
dataset['dimensions'] = dimensions
context['dataset'] = dataset
context['series'] = series
return Response(context)
class SalesViewSet(viewsets.ModelViewSet):
"""
list:
Response a data listall
"""
pagination_class = None
filter_backends = [DjangoFilterBackend, OrderingFilter, ]
ordering_fields = ['id', "create_time", "update_time", ]
filter_class = DnDetailFilter
def get_project(self):
try:
id = self.kwargs.get('pk')
return id
except:
return None
def get_queryset(self):
id = self.get_project()
if self.request.user:
if id is None:
return DnDetailModel.objects.filter(openid=self.request.auth.openid, dn_status__gte=4,
create_time__gte=timezone.now().date() - relativedelta(days=14),
is_delete=False)
else:
return DnDetailModel.objects.filter(openid=self.request.auth.openid, dn_status__gte=4,
create_time__gte=timezone.now().date() - relativedelta(days=14),
id=id, is_delete=False)
else:
return DnDetailModel.objects.none()
def get_serializer_class(self):
if self.action in ['list']:
return dnserializers.DNDetailGetSerializer
else:
return self.http_method_not_allowed(request=self.request)
def notice_lang(self):
lang = self.request.META.get('HTTP_LANGUAGE')
return lang
def list(self, request, *args, **kwargs):
qs = self.get_queryset()
context = {}
dataset = {}
dimensions = ['product']
source = []
series = []
bar_charts = {
"type": 'bar',
"barWidth": '4%',
"barGap": '60%',
"barCategoryGap": '10%',
"itemStyle": {
"normal": {
"label": {
"show": "true",
"position": "top"
}
}
}
}
receipt_res = qs.annotate(month=ExtractMonth('create_time'), day=ExtractDay('create_time')) \
.values('month', 'day').order_by('month', 'day').annotate(number=Sum('goods_cost'))
# qty_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_qty'))
# rank_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_cost'))
receipt_res_dict = {
}
# qty_res_dict = {
# }
# rank_res_dict = {
# }
for i in receipt_res:
series.append(bar_charts)
dimensions.append("%s-%s" % (i['month'], i['day']))
receipt_res_dict.update({"%s-%s" % (i['month'], i['day']): i['number']})
# for i in qty_res:
# qty_res_dict.update({i['goods_code']: i['number']})
# for i in rank_res:
# rank_res_dict.update({i['goods_code']: i['number']})
source.append(receipt_res_dict)
# data_list.append(qty_res_dict)
# data_list.append(rank_res_dict)
dataset['source'] = source
dataset['dimensions'] = dimensions
context['dataset'] = dataset
context['series'] = series
return Response(context)