Files
material-api/web/commons/models/steel_strand.py
2024-05-29 10:21:31 +08:00

33 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, Numeric, Date, UniqueConstraint, func
from commons.models.mixin.steel import SteelMixin
from core.extensions import db
class SteelStrand(db.Model, SteelMixin):
__tablename__ = 'STEEL_STRAND'
id = Column('ID', Integer, primary_key=True)
name = Column('NAME', String(128), default='', comment='名称')
spec = Column('SPEC', String(128), default='', comment='规格')
material = Column('MATERIAL', String(64), default='', comment='材质')
source = Column('SOURCE', String(64), default='', comment='产地')
price = Column('PRICE', Numeric(16, 4), default=0, comment='价格')
fluctuating = Column('FLUCTUATING', Numeric(16, 4), default=0, comment='浮动')
date = Column('DATE', Date, comment='日期')
__table_args__ = (
UniqueConstraint(name, spec, material, source, date, name='Idx_key'),
{'comment': '钢绞线'},
)
@classmethod
def get_items(cls, year, month, material_in=('SWRH82B',), name_in=('弹簧钢',)):
query = cls.query
query = cls.query_by_month(query, year, month)
query = query.filter(cls.material.in_(material_in))
query = query.filter(cls.name.in_(name_in))
query = query.with_entities(cls.material, func.avg(cls.price))
query = query.group_by(cls.material)
result = query.all()
return result