diff --git a/web/collectors/__init__.py b/web/collectors/__init__.py index aa81e3c..c91abbe 100644 --- a/web/collectors/__init__.py +++ b/web/collectors/__init__.py @@ -5,10 +5,7 @@ from sqlalchemy import func from commons.models.fujian_survey import FujianSurvey from commons.models.price_publish import PricePublish from commons.models.price_result import PriceResult - - -MATERIAL_ID_TYPE_1 = [] -MATERIAL_ID_TYPE_2 = [] +from commons.models.material import Material class Collector: @@ -18,80 +15,12 @@ class Collector: self.month = month self.force = True # todo-2 已发布的价格不在覆盖计算 self.digit_map = {} + # 获取所有材料信息 + self.materials = Material.query.all() + self.material_codes = [m.code for m in self.materials if m.code] def get_avg(self): - query = PricePublish.get_query(name_in=( - '杉原木', - '松原木', - '锯材', - '锯材', - '毛竹', - '冷轧带肋钢筋网', - '预应力粗钢筋', - '高强钢丝', - '钢板', - '钢板', - '圆钢', - '钢轨', - '钢管', - '镀锌钢管', - '镀锌无缝钢管', - '镀锌钢板', - '钢丝绳', - '波形钢板(双波)', - '波形钢板(三波)', - '四氟板式橡胶组合支座', - '板式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '模数式伸缩装置', - '模数式伸缩装置', - '钢绞线群锚(3孔)', - '钢绞线群锚(7孔)', - '钢绞线群锚(15孔)', - '不锈钢板', - '铁件', - '铝合金标志', - '铸铁管', - '钢板网', - '铁丝编织网', - '橡胶护舷', - '橡胶护舷', - '橡胶护舷', - '鼓型橡胶护舷', - '鼓型橡胶护舷', - '鼓型橡胶护舷', - '油漆', - '塑料排水板', - '路缘石', - '乳化炸药', - '硝铵炸药', - '导火线', - '普通雷管', - '电雷管', - '工业数码电子雷管', - '导爆索', - '引爆母线', - '重油', - - '光圆钢筋', - '带肋钢筋', - '型钢', - '钢绞线', - '32.5级水泥', - '42.5级水泥', - '进口沥青', - '国产沥青', - '进口改性沥青', - '国产改性沥青', - '汽油(89)', - '汽油(92)', - '柴油(0)', - )) + query = PricePublish.get_query(material_id_in=self.material_codes) query = PricePublish.query_previous_month(query, start_date=datetime.date(self.year, self.month, 1), count=6) query = query.with_entities( PricePublish.material_id, @@ -150,64 +79,7 @@ class Collector: ).upsert() def get_from_survey(self): - query = FujianSurvey.get_query(self.year, self.month, name_in=( - '杉原木', - '松原木', - '锯材', - '锯材', - '毛竹', - '冷轧带肋钢筋网', - '预应力粗钢筋', - '高强钢丝', - '钢板', - '钢板', - '圆钢', - '钢轨', - '钢管', - '镀锌钢管', - '镀锌无缝钢管', - '镀锌钢板', - '钢丝绳', - '波形钢板(双波)', - '波形钢板(三波)', - '四氟板式橡胶组合支座', - '板式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '盆式橡胶支座', - '模数式伸缩装置', - '模数式伸缩装置', - '钢绞线群锚(3孔)', - '钢绞线群锚(7孔)', - '钢绞线群锚(15孔)', - '不锈钢板', - '铁件', - '铝合金标志', - '铸铁管', - '钢板网', - '铁丝编织网', - '橡胶护舷', - '橡胶护舷', - '橡胶护舷', - '鼓型橡胶护舷', - '鼓型橡胶护舷', - '鼓型橡胶护舷', - '油漆', - '塑料排水板', - '路缘石', - '乳化炸药', - '硝铵炸药', - '导火线', - '普通雷管', - '电雷管', - '工业数码电子雷管', - '导爆索', - '引爆母线', - '重油', - )) + query = FujianSurvey.get_query(self.year, self.month, material_id_in=self.material_codes) data = query.all() for item in data: PricePublish( @@ -234,82 +106,7 @@ class Collector: ).upsert() def get_from_result(self): - query = PriceResult.get_query(self.year, self.month, material_id_in=( - '2001001', - '2001002', - '2001008', - '2003004', - '2003005', - '2003005001', - '5509001', - '5509002', - '5509003', - '3001001002', - '3001001001', - '3001002002', - '3001002001', - '3003002001', - '3003002002', - '3003003', - '4003001001', - '4003001002', - '4003002002', - '4003002001', - '4005001', - '2001003', - '2001006', - '2001013', - '2003006', - '2003007', - '2003008', - '2003009', - '2004004', - '2003012', - '2001019', - '2003015', - '2003016', - '2003017001', - '2003017002', - '2003021', - '2003022', - '6001002', - '6001003', - '6001059', - '6001071', - '6001080', - '6001086', - '6001089', - '6001092', - '6003001', - '6003003', - '6005005', - '6005009', - '6005015', - '2005002', - '2009028', - '6007002', - '2009033', - '2001025', - '2001026', - '6002001', - '6002002', - '6002003', - '6002004', - '6002005', - '6002006', - '5009002', - '5506001', - '5005001', - '5005002', - '5005003', - '5005006', - '5005007', - '5006001', - '5005009', - '5006002', - '5007003001', - '3003001', - )) + 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} for item in data: @@ -338,7 +135,6 @@ class Collector: ).upsert() def run(self): - # 当月价 # self.get_from_survey() self.get_from_result() diff --git a/web/commons/models/price_publish.py b/web/commons/models/price_publish.py index 0cb9734..d773816 100644 --- a/web/commons/models/price_publish.py +++ b/web/commons/models/price_publish.py @@ -74,7 +74,7 @@ class PricePublish(db.Model, Model, OperationTrackMixin, BaseModelMixin): return query @classmethod - def get_query(cls, year=None, month=None, name_in=None): + def get_query(cls, year=None, month=None, name_in=None, material_id_in=None): query = cls.query if year: query = query.filter(cls.year == year) @@ -82,4 +82,6 @@ class PricePublish(db.Model, Model, OperationTrackMixin, BaseModelMixin): query = query.filter(cls.month == month) if name_in: query = query.filter(cls.name.in_(name_in)) + if material_id_in: + query = query.filter(cls.material_id.in_(material_id_in)) return query diff --git a/web/tasks/once/collect.py b/web/tasks/once/collect.py index 146497e..ef954a8 100644 --- a/web/tasks/once/collect.py +++ b/web/tasks/once/collect.py @@ -13,9 +13,11 @@ if __name__ == '__main__': from core.factory import ClientApp with ClientApp().app_context(): + collect(2024, 8) + # for i in range(2, 12): # collect(2022, i + 1) # for i in range(0, 12): # collect(2023, i + 1) - for i in range(5, 10): - collect(2024, i + 1) + # for i in range(5, 10): + # collect(2024, i + 1)