Browse Source

update 续驶里程写表方式

lmstack 3 years ago
parent
commit
f01cec9666

+ 11 - 9
LIB/FRONTEND/DrivingRange/create_table1.py

@@ -9,14 +9,14 @@ from urllib import parse
 Base = declarative_base()
 Base = declarative_base()
 
 
 
 
-class ConsistencyDeltaSoc(Base):
+class DrivingRangeSnFactorNewest(Base):
     __tablename__ = "driving_range_sn_factor_newest"
     __tablename__ = "driving_range_sn_factor_newest"
     __table_args__ = ({'comment': '续驶里程 最新sn factor'})  # 添加索引和表注释
     __table_args__ = ({'comment': '续驶里程 最新sn factor'})  # 添加索引和表注释
 
 
-    id = Column(Integer, primary_key=True, autoincrement=True, comment="主键")
+    # id = Column(Integer, primary_key=True, autoincrement=True, comment="主键")
     add_time = Column(TIMESTAMP(True), server_default=func.now(), comment='记录创建时间') # 创建时间
     add_time = Column(TIMESTAMP(True), server_default=func.now(), comment='记录创建时间') # 创建时间
     update_time = Column(TIMESTAMP(True), nullable=False, server_default=func.now(), onupdate=func.now(), comment='记录更新时间') # 更新时间
     update_time = Column(TIMESTAMP(True), nullable=False, server_default=func.now(), onupdate=func.now(), comment='记录更新时间') # 更新时间
-    sn = Column(String(64), comment="sn")
+    sn = Column(String(64), comment="sn,主键", primary_key=True)
     date = Column(DateTime, comment="日期")
     date = Column(DateTime, comment="日期")
     a0 = Column(FLOAT, comment="系数")
     a0 = Column(FLOAT, comment="系数")
     a1 = Column(FLOAT, comment="系数")
     a1 = Column(FLOAT, comment="系数")
@@ -25,12 +25,14 @@ class ConsistencyDeltaSoc(Base):
     a4 = Column(FLOAT, comment="系数")
     a4 = Column(FLOAT, comment="系数")
 
 
 
 
-    # def __init__(self, sn, current, time_stamp, pack_state, line_state):
-    #     self.sn = sn
-    #     self.current = current
-    #     self.time_stamp = time_stamp
-    #     self.pack_state = pack_state
-    #     self.line_state = line_state
+    def __init__(self, sn, date, a0, a1, a2, a3, a4):
+        self.sn = sn
+        self.date = date
+        self.a0 = a0
+        self.a1 = a1
+        self.a2 = a2
+        self.a3 = a3
+        self.a4 = a4
 
 
 # 执行该文件,创建表格到对应的数据库中
 # 执行该文件,创建表格到对应的数据库中
 if __name__ == "__main__":
 if __name__ == "__main__":

+ 13 - 9
LIB/FRONTEND/DrivingRange/create_table2.py

@@ -9,14 +9,14 @@ from urllib import parse
 Base = declarative_base()
 Base = declarative_base()
 
 
 
 
-class ConsistencyDeltaSoc(Base):
+class DrivingRangeResult(Base):
     __tablename__ = "driving_range_result"
     __tablename__ = "driving_range_result"
     __table_args__ = ({'comment': '每5分钟计算一次续驶里程结果'})  # 添加索引和表注释
     __table_args__ = ({'comment': '每5分钟计算一次续驶里程结果'})  # 添加索引和表注释
 
 
-    id = Column(Integer, primary_key=True, autoincrement=True, comment="主键")
+    # id = Column(Integer, primary_key=True, autoincrement=True, comment="主键")
     add_time = Column(TIMESTAMP(True), server_default=func.now(), comment='记录创建时间') # 创建时间
     add_time = Column(TIMESTAMP(True), server_default=func.now(), comment='记录创建时间') # 创建时间
     update_time = Column(TIMESTAMP(True), nullable=False, server_default=func.now(), onupdate=func.now(), comment='记录更新时间') # 更新时间
     update_time = Column(TIMESTAMP(True), nullable=False, server_default=func.now(), onupdate=func.now(), comment='记录更新时间') # 更新时间
-    sn = Column(String(64), comment="sn")
+    sn = Column(String(64), comment="sn, 主键", primary_key=True,)
     time = Column(DateTime, comment="时间")
     time = Column(DateTime, comment="时间")
     soc = Column(FLOAT, comment="soc")
     soc = Column(FLOAT, comment="soc")
     a0 = Column(FLOAT, comment="系数")
     a0 = Column(FLOAT, comment="系数")
@@ -27,12 +27,16 @@ class ConsistencyDeltaSoc(Base):
     vehelecrng = Column(FLOAT, comment="续驶里程")
     vehelecrng = Column(FLOAT, comment="续驶里程")
 
 
 
 
-    # def __init__(self, sn, current, time_stamp, pack_state, line_state):
-    #     self.sn = sn
-    #     self.current = current
-    #     self.time_stamp = time_stamp
-    #     self.pack_state = pack_state
-    #     self.line_state = line_state
+    def __init__(self, sn, time, soc, a0, a1, a2, a3, a4, vehelecrng):
+        self.sn = sn
+        self.time = time
+        self.soc = soc
+        self.a0 = a0
+        self.a1 = a1
+        self.a2 = a2
+        self.a3 = a3
+        self.a4 = a4
+        self.vehelecrng = vehelecrng
 
 
 # 执行该文件,创建表格到对应的数据库中
 # 执行该文件,创建表格到对应的数据库中
 if __name__ == "__main__":
 if __name__ == "__main__":

+ 21 - 11
LIB/FRONTEND/DrivingRange/deploy_driving_range.py

@@ -12,6 +12,7 @@ from LIB.MIDDLE.DrivingRange import UpdtFct
 from urllib import parse
 from urllib import parse
 import pymysql
 import pymysql
 import dateutil.relativedelta
 import dateutil.relativedelta
+from create_table2 import DrivingRangeResult
 
 
 dbManager = DBManager.DBManager()
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
 if __name__ == "__main__":
@@ -70,21 +71,30 @@ if __name__ == "__main__":
 
 
     logger.info("pid is {}".format(os.getpid()))
     logger.info("pid is {}".format(os.getpid()))
     
     
-    # SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
-    # SNnums_6060=SNdata_6060['SN号']
-    # # SNnums_6060 = ['PK504B00100004019','PK504B00100004029', 'PK504B00100004080', 'PK504B00100004264', 'PK504B10100004331']
-    # now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
-    # now_time = "2021-08-01 00:00:00" # 定时任务开启时,需要删除改行!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-    # now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
-    # start_time=now_time-datetime.timedelta(days=1000)
-    # end_time=str(now_time)
-    # start_time=str(start_time)
     try:
     try:
         #调度周期:每天运行一次。
         #调度周期:每天运行一次。
         #更新所有sn,连读多日的factor,如果start_date和end_date相隔一天,代表更新start_date的factor。
         #更新所有sn,连读多日的factor,如果start_date和end_date相隔一天,代表更新start_date的factor。
         logger.info(u"{},{} 任务运行开始\n".format(start_time,end_time), exc_info=True)
         logger.info(u"{},{} 任务运行开始\n".format(start_time,end_time), exc_info=True)
-        UpdtFct.updtVehElecRng(db_qx, db_qx, db_engine, range_table_name='driving_range_result', sn_newest_table_name='driving_range_sn_factor_newest', input_time=start_time)
+        df_res = UpdtFct.updtVehElecRng(db_qx, db_qx, sn_newest_table_name='driving_range_sn_factor_newest', input_time=start_time)
+        df_res = df_res.reset_index(drop=True)
+        session = DbSession()
+        for i in range(0, len(df_res)-1):
+            obj = session.query(DrivingRangeResult).filter_by(sn=df_res.loc[i,'sn']).first()
+            if not obj:
+                obj = DrivingRangeResult(df_res.loc[i,'sn'],df_res.loc[i,'time'],df_res.loc[i,'soc'],df_res.loc[i,'a0'],df_res.loc[i,'a1'],df_res.loc[i,'a2'],df_res.loc[i,'a3'],df_res.loc[i,'a4'],
+                                         df_res.loc[i,'vehelecrng'])               
+            else:
+                obj.time = df_res.loc[i,'time']
+                obj.soc = df_res.loc[i,'soc']
+                obj.a0 = df_res.loc[i,'a0']
+                obj.a1 = df_res.loc[i,'a1']
+                obj.a2 = df_res.loc[i,'a2']
+                obj.a3 = df_res.loc[i,'a3']
+                obj.a4 = df_res.loc[i,'a4']
+                obj.vehelecrng = df_res.loc[i,'vehelecrng']
+            session.add(obj)
+        session.commit()
+        session.close()
         logger.info(u"{},{} 续驶里程计算完成\n".format(start_time,end_time), exc_info=True)
         logger.info(u"{},{} 续驶里程计算完成\n".format(start_time,end_time), exc_info=True)
     except:
     except:
         logger.error(traceback.format_exc)
         logger.error(traceback.format_exc)

+ 22 - 2
LIB/FRONTEND/DrivingRange/deploy_sn_factor.py

@@ -6,12 +6,14 @@ from LIB.BACKEND import DBManager, Log
 from LIB.MIDDLE import SignalMonitor
 from LIB.MIDDLE import SignalMonitor
 from sqlalchemy import create_engine
 from sqlalchemy import create_engine
 from sqlalchemy.orm import sessionmaker
 from sqlalchemy.orm import sessionmaker
+from sqlalchemy.dialects.mysql import insert
 import time, datetime
 import time, datetime
 import traceback
 import traceback
 from LIB.MIDDLE.DrivingRange import UpdtFct
 from LIB.MIDDLE.DrivingRange import UpdtFct
 from urllib import parse
 from urllib import parse
 import pymysql
 import pymysql
 import dateutil.relativedelta
 import dateutil.relativedelta
+from create_table1 import DrivingRangeSnFactorNewest
 
 
 dbManager = DBManager.DBManager()
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
 if __name__ == "__main__":
@@ -83,10 +85,28 @@ if __name__ == "__main__":
         #调度周期:每天运行一次。
         #调度周期:每天运行一次。
         #更新所有sn,连读多日的factor,如果start_date和end_date相隔一天,代表更新start_date的factor。
         #更新所有sn,连读多日的factor,如果start_date和end_date相隔一天,代表更新start_date的factor。
         logger.info(u"{},{} 任务运行开始\n".format(start_time,end_time), exc_info=True)
         logger.info(u"{},{} 任务运行开始\n".format(start_time,end_time), exc_info=True)
-        UpdtFct.updtAllSnFct(start_time[0:10],end_time[0:10], db_engine, db_qx, db_qx, sn_table_name='driving_range_sn_factor')
+        # UpdtFct.updtAllSnFct(start_time[0:10],end_time[0:10], db_engine, db_qx, db_qx, sn_table_name='driving_range_sn_factor')
         logger.info(u"{},{} sn 参数更新完成\n".format(start_time,end_time), exc_info=True)
         logger.info(u"{},{} sn 参数更新完成\n".format(start_time,end_time), exc_info=True)
         logger.info(u"{},{} sn 最新参数更新开始\n".format(start_time,end_time), exc_info=True)
         logger.info(u"{},{} sn 最新参数更新开始\n".format(start_time,end_time), exc_info=True)
-        UpdtFct.updtNewestFctTb(db_qx, db_engine, sn_table_name='driving_range_sn_factor', sn_newest_table_name='driving_range_sn_factor_newest')
+        df_res = UpdtFct.updtNewestFctTb(now_time, db_qx, sn_table_name='driving_range_sn_factor')
+        df_res = df_res.reset_index(drop=True)
+        session = DbSession()
+        
+        for i in range(0, len(df_res)-1):
+            obj = session.query(DrivingRangeSnFactorNewest).filter_by(sn=df_res.loc[i,'sn']).first()
+            if not obj:
+                obj = DrivingRangeSnFactorNewest(df_res.loc[i,'sn'],df_res.loc[i,'date'],df_res.loc[i,'a0'],df_res.loc[i,'a1'],df_res.loc[i,'a2'],df_res.loc[i,'a3'],df_res.loc[i,'a4'])               
+            else:
+                obj.date = df_res.loc[i,'date']
+                obj.a0 = df_res.loc[i,'a0']
+                obj.a1 = df_res.loc[i,'a1']
+                obj.a2 = df_res.loc[i,'a2']
+                obj.a3 = df_res.loc[i,'a3']
+                obj.a4 = df_res.loc[i,'a4']
+            session.add(obj)
+        session.commit()
+        session.close()
+
         logger.info(u"{},{} sn 最新参数更新完成\n".format(start_time,end_time), exc_info=True)
         logger.info(u"{},{} sn 最新参数更新完成\n".format(start_time,end_time), exc_info=True)
     except:
     except:
         logger.error(traceback.format_exc)
         logger.error(traceback.format_exc)