spt_air.py
4.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from sqlalchemy import (Column, Integer, DateTime, ForeignKey, String,
SmallInteger, BigInteger, Float)
from sqlalchemy.orm import (relationship)
# from opensipkd.pjdl.models.bak.air import AtSumberAlternatif
from . import PAD_TABLE_ARGS, Base, DBSession, DefaultModel
from . import (
PjdlOp, PjdlKecamatan, PjdlKelurahan, PjdlAirtanahZona,
PjdlAirtanahKualitas, PjdlAirtanahSumberAlternatif,
PjdlAirtanahJenisSumber, PjdlAirtanahJenisManfaat)
class PjdlSptAir(Base, DefaultModel):
__tablename__ = 'pad_spt_at_det'
__table_args__ = PAD_TABLE_ARGS
id = Column(BigInteger, primary_key=True)
spt_id = Column(ForeignKey('pad.pad_spt.id'))
customer_usaha_id = Column(ForeignKey(
PjdlOp.id, ondelete='CASCADE', onupdate='CASCADE'))
alamat = Column(String(255))
kecamatan_id = Column(ForeignKey(PjdlKecamatan.id, onupdate='CASCADE'))
kelurahan_id = Column(ForeignKey(PjdlKelurahan.id, onupdate='CASCADE'))
titik_ke = Column(Integer)
zona_id = Column(ForeignKey(PjdlAirtanahZona.id, onupdate='CASCADE'))
kualitas_id = Column(ForeignKey(
PjdlAirtanahKualitas.id, onupdate='CASCADE'))
sumber_alternatif_id = Column(ForeignKey(
PjdlAirtanahSumberAlternatif.id, onupdate='CASCADE'))
jenis_sumber_id = Column(ForeignKey(
PjdlAirtanahJenisSumber.id, onupdate='CASCADE'))
manfaat_id = Column(ForeignKey(
PjdlAirtanahJenisManfaat.id, onupdate='CASCADE'))
volume = Column(Integer)
ksda = Column(Float(53))
volume_progresif = Column(String(50))
volume_progresif_val = Column(Integer)
indeks_kp = Column(Float(53))
kp = Column(Float(53))
fna = Column(Float(53))
hab = Column(Float(53))
hda = Column(BigInteger)
npa = Column(BigInteger)
# penggunaan_id = Column(ForeignKey('pad.pad_at_penggunaan.id'))
volume_id = Column(ForeignKey('pad.pad_at_volume.id'))
no_izin = Column(String(255))
tanggal_izin = Column(DateTime)
status = Column(SmallInteger)
tanggal_pencatatan = Column(DateTime)
volume_diizinkan = Column(Integer)
meteran_awal = Column(Integer)
meteran_akhir = Column(Integer)
volume_pemakaian = Column(Integer)
volume_kelebihan_pemakaian = Column(Integer)
npa_normal = Column(BigInteger)
npa_kelebihan = Column(BigInteger)
npa_kelebihan_sanksi = Column(BigInteger)
uraian = Column(String(256))
customer_usaha = relationship('PjdlOp', backref='pad_spt_at_dets')
sumber_alternatif = relationship(
'PjdlAirtanahSumberAlternatif', backref='pad_spt_at_dets')
zona = relationship('PjdlAirtanahZona', backref='pad_spt_at_dets')
jenis_sumber = relationship(
'PjdlAirtanahJenisSumber', backref='pad_spt_at_dets')
kecamatan = relationship('PjdlKecamatan', backref='pad_spt_at_dets')
kelurahan = relationship('PjdlKelurahan', backref='pad_spt_at_dets')
kualitas = relationship('PjdlAirtanahKualitas', backref='pad_spt_at_dets')
manfaat = relationship('PjdlAirtanahJenisManfaat',
backref='pad_spt_at_dets')
spt = relationship('PjdlInvoice', backref='pad_spt_at_dets')
sumber_alternatif = relationship(
'PjdlAirtanahSumberAlternatif', backref='pad_spt_at_dets')
zona = relationship('PjdlAirtanahZona', backref='pad_spt_at_dets')
# at_penggunaan = relationship('AtPenggunaan')
# at_volume = relationship('AtVolume')
@classmethod
def get_sda(cls, atid):
result = DBSession.query(
cls.id,
PjdlAirtanahZona.nilai_komponen_sda.label('zonasda'),
PjdlAirtanahZona.nilai_indeks.label('zonaidx'),
PjdlAirtanahKualitas.nilai_indeks.label('kualitasidx'),
PjdlAirtanahSumberAlternatif.nilai_indeks.label('alternatifidx'),
PjdlAirtanahJenisSumber.nilai_indeks.label('sumberidx')
).\
join(PjdlAirtanahZona, PjdlAirtanahZona.id == cls.zona_id).\
join(PjdlAirtanahKualitas, PjdlAirtanahKualitas.id == cls.kualitas_id).\
join(PjdlAirtanahSumberAlternatif, PjdlAirtanahSumberAlternatif.id == cls.sumber_alternatif_id).\
join(PjdlAirtanahJenisSumber,
PjdlAirtanahJenisSumber.id == cls.jenis_sumber_id)
result = result.filter(cls.id == atid)
result = result.first()
if result:
rzonasda = result.zonasda
rzonaidx = result.zonaidx
rkualitasidx = result.kualitasidx
ralternatifidx = result.alternatifidx
rsumberidx = result.sumberidx
sda = rzonasda * (rzonaidx + rkualitasidx +
ralternatifidx + rsumberidx)
else:
sda = 0.0
return sda