From 7a9aa93a105279e9e96d30f97e195fbbd0e3679d Mon Sep 17 00:00:00 2001 From: han0 Date: Mon, 19 May 2025 15:57:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E4=BB=B7=E6=9D=90=E6=96=99=E9=87=8D=E5=A4=8D=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/collectors/__init__.py | 31 +++++++++++++++++-------------- web/tasks/once/collect.py | 10 +++++----- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/web/collectors/__init__.py b/web/collectors/__init__.py index 0e7accd..4fcab46 100644 --- a/web/collectors/__init__.py +++ b/web/collectors/__init__.py @@ -20,6 +20,9 @@ class Collector: self.material_codes = [m.code for m in self.materials if m.code] # 缓存材料税率信息 self.tax_map = {m.code: m.tax for m in self.materials if m.code} + self.unit_map = {m.code: m.unit for m in self.materials if m.code} + self.name_map = {m.code: m.name for m in self.materials if m.code} + self.spec_map = {m.code: m.spec for m in self.materials if m.code} def get_avg(self): query = PricePublish.get_query(material_id_in=self.material_codes) @@ -27,8 +30,8 @@ class Collector: query = query.filter(PricePublish.type == '1') query = query.with_entities( PricePublish.material_id, - PricePublish.name, - PricePublish.spec, + # PricePublish.name, + # PricePublish.spec, func.avg(PricePublish.price), func.avg(PricePublish.price_fuzhou), func.avg(PricePublish.price_xiamen), @@ -41,28 +44,28 @@ class Collector: func.avg(PricePublish.price_ningde), func.avg(PricePublish.price_pintan), func.avg(PricePublish.price_zhangzhoukfq), - PricePublish.tax, - PricePublish.unit, + # PricePublish.tax, + # PricePublish.unit, ) query = query.filter(PricePublish.price != 0) query = query.group_by( PricePublish.material_id, - PricePublish.name, - PricePublish.spec, - PricePublish.tax, - PricePublish.unit, + # PricePublish.name, + # PricePublish.spec, + # PricePublish.tax, + # PricePublish.unit, ) data = query.all() for item in data: - material_id, name, spec, price, price_fuzhou, price_xiamen, price_putian, price_sanming, price_quanzhou, \ - price_zhangzhou, price_nanpin, price_longyan, price_ningde, price_pintan, price_zhangzhoukfq, tax, unit, = item + material_id, price, price_fuzhou, price_xiamen, price_putian, price_sanming, price_quanzhou, \ + price_zhangzhou, price_nanpin, price_longyan, price_ningde, price_pintan, price_zhangzhoukfq = item display_digit = self.digit_map.get(material_id, 1) PricePublish( year=self.year, month=self.month, material_id=material_id, - name=name, - spec=spec, + name=self.name_map.get(material_id, ''), + spec=self.spec_map.get(material_id, ''), price=round(price, 2), price_fuzhou=round(price_fuzhou or 0, 2), price_xiamen=round(price_xiamen or 0, 2), @@ -75,9 +78,9 @@ class Collector: price_ningde=round(price_ningde or 0, 2), price_pintan=round(price_pintan or 0, 2), price_zhangzhoukfq=round(price_zhangzhoukfq or 0, 2), - tax=self.tax_map.get(material_id, tax), # 从材料表获取税率 + tax=self.tax_map.get(material_id, 0), # 从材料表获取税率 type=2, - unit=unit, + unit=self.unit_map.get(material_id, ''), display_digit=display_digit, ).upsert() diff --git a/web/tasks/once/collect.py b/web/tasks/once/collect.py index 27cc6dd..bce369d 100644 --- a/web/tasks/once/collect.py +++ b/web/tasks/once/collect.py @@ -15,11 +15,11 @@ if __name__ == '__main__': from core.factory import ClientApp with ClientApp().app_context(): - # collect(2025, 4) + collect(2025, 4) # for i in range(4): # collect(2025, i + 1) - for i in range(9,12): - collect(2023, i + 1) - for i in range(12): - collect(2024, i + 1) + # for i in range(9,12): + # collect(2023, i + 1) + # for i in range(12): + # collect(2024, i + 1)