feat: 新增发布价计算按上月发布加浮动
This commit is contained in:
@@ -2,6 +2,7 @@ import datetime
|
||||
|
||||
from sqlalchemy import func
|
||||
|
||||
from calculators import Helper
|
||||
from commons.models.fujian_survey import FujianSurvey
|
||||
from commons.models.price_publish import PricePublish
|
||||
from commons.models.price_result import PriceResult
|
||||
@@ -80,62 +81,42 @@ class Collector:
|
||||
display_digit=display_digit,
|
||||
).upsert()
|
||||
|
||||
def get_from_survey(self):
|
||||
query = FujianSurvey.get_query(self.year, self.month, material_id_in=self.material_codes)
|
||||
data = query.all()
|
||||
for item in data:
|
||||
PricePublish(
|
||||
year=self.year,
|
||||
month=self.month,
|
||||
material_id=item.material_id,
|
||||
name=item.name,
|
||||
spec=item.spec,
|
||||
price=item.price,
|
||||
price_fuzhou=item.price,
|
||||
price_xiamen=item.price,
|
||||
price_putian=item.price,
|
||||
price_sanming=item.price,
|
||||
price_quanzhou=item.price,
|
||||
price_zhangzhou=item.price,
|
||||
price_nanpin=item.price,
|
||||
price_longyan=item.price,
|
||||
price_ningde=item.price,
|
||||
price_pintan=item.price,
|
||||
price_zhangzhoukfq=item.price,
|
||||
tax=self.tax_map.get(item.material_id, item.tax), # 从材料表获取税率
|
||||
type=1,
|
||||
unit=item.unit
|
||||
).upsert()
|
||||
|
||||
def get_from_result(self):
|
||||
# 获取当月趋势表数据
|
||||
query = PriceResult.get_query(self.year, self.month, material_id_in=self.material_codes)
|
||||
data = query.all()
|
||||
self.digit_map = {i.material_id:i.display_digit for i in data}
|
||||
self.digit_map = {i.material_id: i.display_digit for i in data}
|
||||
# 获取上月发布价数据
|
||||
previous = PricePublish.get_query(*Helper.get_last_month(self.year, self.month), type=1)
|
||||
previous_prices_map = {i.material_id: i for i in previous}
|
||||
|
||||
for item in data:
|
||||
# 从材料表获取税率
|
||||
PricePublish(
|
||||
year=self.year,
|
||||
month=self.month,
|
||||
material_id=item.material_id,
|
||||
name=item.name,
|
||||
spec=item.spec,
|
||||
price=item.price_recommend,
|
||||
price_fuzhou=item.price_recommend,
|
||||
price_xiamen=item.price_recommend,
|
||||
price_putian=item.price_recommend,
|
||||
price_sanming=item.price_recommend,
|
||||
price_quanzhou=item.price_recommend,
|
||||
price_zhangzhou=item.price_recommend,
|
||||
price_nanpin=item.price_recommend,
|
||||
price_longyan=item.price_recommend,
|
||||
price_ningde=item.price_recommend,
|
||||
price_pintan=item.price_recommend,
|
||||
price_zhangzhoukfq=item.price_recommend,
|
||||
tax=self.tax_map.get(item.material_id),
|
||||
type=1,
|
||||
unit=item.unit,
|
||||
display_digit=item.display_digit,
|
||||
).upsert()
|
||||
fluctuating = item.fluctuating_recommend
|
||||
previous_prices = previous_prices_map.get(item.material_id, PricePublish())
|
||||
result = {
|
||||
'year': self.year,
|
||||
'month': self.month,
|
||||
'material_id': item.material_id,
|
||||
'name': item.name,
|
||||
'spec': item.spec,
|
||||
'price': item.price_recommend,
|
||||
'price_fuzhou': item.price_recommend,
|
||||
'price_xiamen': previous_prices.price_xiamen + fluctuating if previous_prices.price_xiamen else item.price_recommend,
|
||||
'price_putian': previous_prices.price_putian + fluctuating if previous_prices.price_putian else item.price_recommend,
|
||||
'price_sanming': previous_prices.price_sanming + fluctuating if previous_prices.price_sanming else item.price_recommend,
|
||||
'price_quanzhou': previous_prices.price_quanzhou + fluctuating if previous_prices.price_quanzhou else item.price_recommend,
|
||||
'price_zhangzhou': previous_prices.price_zhangzhou + fluctuating if previous_prices.price_zhangzhou else item.price_recommend,
|
||||
'price_nanpin': previous_prices.price_nanpin + fluctuating if previous_prices.price_nanpin else item.price_recommend,
|
||||
'price_longyan': previous_prices.price_longyan + fluctuating if previous_prices.price_longyan else item.price_recommend,
|
||||
'price_ningde': previous_prices.price_ningde + fluctuating if previous_prices.price_ningde else item.price_recommend,
|
||||
'price_pintan': previous_prices.price_pintan + fluctuating if previous_prices.price_pintan else item.price_recommend,
|
||||
'price_zhangzhoukfq': previous_prices.price_zhangzhoukfq + fluctuating if previous_prices.price_zhangzhoukfq else item.price_recommend,
|
||||
'tax': self.tax_map.get(item.material_id), # 从材料表获取税率
|
||||
'type': 1,
|
||||
'unit': item.unit,
|
||||
'display_digit': item.display_digit,
|
||||
}
|
||||
PricePublish(**result).upsert()
|
||||
|
||||
def run(self):
|
||||
# 当月价
|
||||
|
Reference in New Issue
Block a user