fix: 修复发布价材料重复的问题

This commit is contained in:
han0
2025-05-19 15:57:25 +08:00
parent 40c1593ff7
commit 7a9aa93a10
2 changed files with 22 additions and 19 deletions

View File

@@ -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()

View File

@@ -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)