fix: 修复材料半年均价显示位数异常的问题
This commit is contained in:
@@ -25,6 +25,7 @@ class Collector:
|
||||
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}
|
||||
self.round_bit_map = {m.code: m.round_bit for m in self.materials if m.code}
|
||||
|
||||
def get_avg(self):
|
||||
query = PricePublish.get_query(material_id_in=self.material_codes)
|
||||
@@ -32,8 +33,6 @@ class Collector:
|
||||
query = query.filter(PricePublish.type == '1')
|
||||
query = query.with_entities(
|
||||
PricePublish.material_id,
|
||||
# PricePublish.name,
|
||||
# PricePublish.spec,
|
||||
func.avg(PricePublish.price),
|
||||
func.avg(PricePublish.price_fuzhou),
|
||||
func.avg(PricePublish.price_xiamen),
|
||||
@@ -46,41 +45,36 @@ class Collector:
|
||||
func.avg(PricePublish.price_ningde),
|
||||
func.avg(PricePublish.price_pintan),
|
||||
func.avg(PricePublish.price_zhangzhoukfq),
|
||||
# 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,
|
||||
)
|
||||
data = query.all()
|
||||
for item in data:
|
||||
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)
|
||||
|
||||
round_bit = self.round_bit_map.get(material_id, 2)
|
||||
q_ext = Decimal('0.' + '0' * round_bit)
|
||||
PricePublish(
|
||||
year=self.year,
|
||||
month=self.month,
|
||||
material_id=material_id,
|
||||
name=self.name_map.get(material_id, ''),
|
||||
spec=self.spec_map.get(material_id, ''),
|
||||
price=price.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price else 0,
|
||||
price_fuzhou=price_fuzhou.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_fuzhou else 0,
|
||||
price_xiamen=price_xiamen.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_xiamen else 0,
|
||||
price_putian=price_putian.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_putian else 0,
|
||||
price_sanming=price_sanming.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_sanming else 0,
|
||||
price_quanzhou=price_quanzhou.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_quanzhou else 0,
|
||||
price_zhangzhou=price_zhangzhou.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_zhangzhou else 0,
|
||||
price_nanpin=price_nanpin.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_nanpin else 0,
|
||||
price_longyan=price_longyan.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_longyan else 0,
|
||||
price_ningde=price_ningde.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_ningde else 0,
|
||||
price_pintan=price_pintan.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_pintan else 0,
|
||||
price_zhangzhoukfq=price_zhangzhoukfq.quantize(Decimal('0.00'), decimal.ROUND_HALF_UP) if price_zhangzhoukfq else 0,
|
||||
price=price.quantize(q_ext, decimal.ROUND_HALF_UP) if price else 0,
|
||||
price_fuzhou=price_fuzhou.quantize(q_ext, decimal.ROUND_HALF_UP) if price_fuzhou else 0,
|
||||
price_xiamen=price_xiamen.quantize(q_ext, decimal.ROUND_HALF_UP) if price_xiamen else 0,
|
||||
price_putian=price_putian.quantize(q_ext, decimal.ROUND_HALF_UP) if price_putian else 0,
|
||||
price_sanming=price_sanming.quantize(q_ext, decimal.ROUND_HALF_UP) if price_sanming else 0,
|
||||
price_quanzhou=price_quanzhou.quantize(q_ext, decimal.ROUND_HALF_UP) if price_quanzhou else 0,
|
||||
price_zhangzhou=price_zhangzhou.quantize(q_ext, decimal.ROUND_HALF_UP) if price_zhangzhou else 0,
|
||||
price_nanpin=price_nanpin.quantize(q_ext, decimal.ROUND_HALF_UP) if price_nanpin else 0,
|
||||
price_longyan=price_longyan.quantize(q_ext, decimal.ROUND_HALF_UP) if price_longyan else 0,
|
||||
price_ningde=price_ningde.quantize(q_ext, decimal.ROUND_HALF_UP) if price_ningde else 0,
|
||||
price_pintan=price_pintan.quantize(q_ext, decimal.ROUND_HALF_UP) if price_pintan else 0,
|
||||
price_zhangzhoukfq=price_zhangzhoukfq.quantize(q_ext, decimal.ROUND_HALF_UP) if price_zhangzhoukfq else 0,
|
||||
tax=self.tax_map.get(material_id, 0), # 从材料表获取税率
|
||||
type=2,
|
||||
unit=self.unit_map.get(material_id, ''),
|
||||
|
Reference in New Issue
Block a user