<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      從數(shù)據(jù)庫(kù)查詢數(shù)據(jù)并導(dǎo)出到excel

      import pymysql
      import datetime
      import xlwt
      import os
      import pandas as pd
      
      def export_excel(output_dir):
          current_datetime = datetime.datetime.now()
          # 將日期時(shí)間格式化為字符串,例如:2023-10-23_14-30-15
          formatted_datetime = current_datetime.strftime('%Y-%m')
          formatted_datetime1 = current_datetime.strftime('%Y-%m-%d')
          # 構(gòu)造文件名,包含表名和格式化后的日期時(shí)間
          file_name = f'{formatted_datetime}月.xls'
          # 使用f-string來格式化工作表名稱
          sheet_name1 = f'{formatted_datetime1}'
          # 構(gòu)造完整的文件路徑
          file_path = os.path.join(output_dir, file_name)
          # 連接MySQL數(shù)據(jù)庫(kù)
          conn = pymysql.connect(host='***', user='***', password='***', db='***')
          # 創(chuàng)建一個(gè)Cursor對(duì)象,用于執(zhí)行SQL命令
          cur = conn.cursor()
          today = datetime.date.today()
          weekday = today.weekday()
          startday = today - datetime.timedelta(days=weekday)
          endday = startday + datetime.timedelta(days=(6 - weekday) if weekday != 6 else 0)
          startday_str = startday.strftime('%Y-%m-%d')
          endday_str = endday.strftime('%Y-%m-%d')
      
          print(f"本周起始日期: {startday_str}")
          print(f"本周結(jié)束日期: {endday_str}")
          person = 5
          sql_query =f"""  
          SELECT          
              CASE dept          
                  WHEN 119 THEN '規(guī)劃南方大區(qū)'          
                  WHEN 148 THEN '調(diào)度主網(wǎng)'          
                  WHEN 149 THEN '調(diào)度配網(wǎng)'          
                  WHEN 150 THEN '調(diào)度發(fā)電'          
                  WHEN 151 THEN '調(diào)度校核'          
                  WHEN 152 THEN '調(diào)度數(shù)字化'          
                  WHEN 32 THEN '規(guī)劃產(chǎn)品研發(fā)'          
                  WHEN 92 THEN '大數(shù)據(jù)產(chǎn)品研發(fā)'          
                  WHEN 102 THEN '新電-平臺(tái)開發(fā)部'          
                  WHEN 76 THEN '新電-產(chǎn)品交付部'          
                  WHEN 62 THEN '新電-交易'          
                  WHEN 75 THEN '數(shù)字設(shè)備研發(fā)二部'          
                  WHEN 26 THEN '數(shù)字設(shè)備研發(fā)一部'          
                  WHEN 19 THEN '研發(fā)中心平臺(tái)巴'         
              END AS 部門,        
              dh.計(jì)劃消耗總工時(shí),      
              dh.總?cè)藬?shù),      
              '{person}' * dh.總?cè)藬?shù) * 8 AS 標(biāo)準(zhǔn)工時(shí),
              round((dh.計(jì)劃消耗總工時(shí) / ('{person}' * dh.總?cè)藬?shù) * 8)) * 100, 2) AS 研發(fā)計(jì)劃負(fù)載率, 
              LEAST(round((dh.計(jì)劃消耗總工時(shí) / ('{person}' * dh.總?cè)藬?shù) * 8)) * 100, 2), 100) AS 研發(fā)計(jì)算負(fù)載率,  -- 確保負(fù)載率不超過100    
              GREATEST(0, (1 - (100 - LEAST(round((dh.計(jì)劃消耗總工時(shí) / ('{person}' * dh.總?cè)藬?shù) * 8)) * 100, 2), 100)) / (100 - 95)) * 2.5) AS 得分 -- 確保得分不低于0  
          FROM (      
              SELECT          
                  dept,      
              round(
              SUM(  
                  CASE  
                    WHEN zt.realStarted = '0000-00-00 00:00:00' THEN  
                      CASE  
                        WHEN zt.deadline BETWEEN '{startday}'  AND '{endday}' AND zt.estStarted < '{startday}'  THEN  
                          (zt.left / (DATEDIFF(zt.deadline, NOW()) + 1)) * (DATEDIFF(zt.deadline, '{startday}' ) + 1)  -- 任務(wù)未開始,預(yù)計(jì)開始日期在計(jì)劃外,截止日期在計(jì)劃內(nèi)
                        WHEN zt.estStarted BETWEEN '{startday}'  AND '{endday}' AND zt.deadline > '{endday}' THEN  
                          (zt.left / (DATEDIFF(zt.deadline, zt.estStarted) + 1)) * (DATEDIFF('{endday}', zt.estStarted) + 1)  -- 任務(wù)未開始,預(yù)計(jì)開始日期在計(jì)劃內(nèi),截止日期在計(jì)劃外
                        WHEN zt.estStarted < '{startday}'  AND zt.deadline > '{endday}' THEN  
                          (zt.left / (DATEDIFF(zt.deadline, NOW()) + 1)) * (DATEDIFF('{endday}', '{startday}' ) + 1)  -- 任務(wù)未開始,預(yù)計(jì)開始日期,截止日期均在計(jì)劃外
                        WHEN zt.estStarted > '{startday}'  AND zt.deadline < '{endday}' THEN  
                          zt.left  -- 任務(wù)未開始,預(yù)計(jì)開始日期,截止日期均在計(jì)劃內(nèi)
                        ELSE 0  
                      END  
                    WHEN zt.realStarted != '0000-00-00 00:00:00' THEN  -- 任務(wù)已開始
                      CASE  
                        WHEN zt.deadline BETWEEN '{startday}'  AND '{endday}' AND zt.estStarted < '{startday}'  THEN  
                          (zt.left / (DATEDIFF(zt.deadline, NOW()) + 1)) * (DATEDIFF(zt.deadline, '{startday}' ) + 1)  
                        WHEN zt.estStarted BETWEEN '{startday}'  AND '{endday}' AND zt.deadline > '{endday}' THEN  
                          (zt.left / (DATEDIFF(zt.deadline, zt.estStarted) + 1)) * (DATEDIFF('{endday}', zt.estStarted) + 1)  
                        WHEN zt.estStarted < '{startday}'  AND zt.deadline > '{endday}' THEN  
                          (zt.left / (DATEDIFF(zt.deadline, NOW()) + 1)) * (DATEDIFF('{endday}', '{startday}' ) + 1)  
                        WHEN zt.estStarted > '{startday}'  AND zt.deadline < '{endday}' THEN  
                          zt.left  
                        ELSE 0  
                      END  
                    ELSE 0  
                  end  
                ),2) AS 計(jì)劃消耗總工時(shí),  
                  count(DISTINCT zu.id) AS 總?cè)藬?shù)  
              FROM          
                  zt_user zu          
                 inner JOIN zt_task zt ON zu.account IN (zt.finishedBy, zt.assignedTo) and zt.parent != -1
                      AND (zt.deadline BETWEEN '{startday}'  AND '{endday}' OR zt.estStarted BETWEEN '{startday}'  AND '{endday}')          
                      AND zt.deleted != '1'           
              WHERE          
                  zu.dept IN (148, 149, 150, 151, 152, 119, 32, 62, 92, 102, 75, 26, 76, 19)          
                  AND zu.deleted = '0'          
                  AND zu.realname NOT IN('仇佳麗','郭鴻志','譚曉龍','鄭朋','韓世飛','陳偉','付龍明','于瑞豐','譚小龍','張文斌','賀成利','寧杰','張琪','楊海燕','朱博','趙少飛')
              GROUP BY          
                  zu.dept      
          ) dh      
          ORDER BY       
              部門;
          """
      
          # 執(zhí)行SQL命令
          cur.execute(sql_query)
          fileds=[filed[0] for filed in cur.description]#所有字段
          all_data=cur.fetchall()#所有數(shù)據(jù)值,數(shù)組形式存放
          book=xlwt.Workbook()
          sheet=book.add_sheet(sheet_name1)
          for col,filed in enumerate(fileds):
              sheet.write(0, col, filed)
          row=1
          for data in all_data:
              for index, datacol in enumerate(data):
                  sheet.write(row, index, datacol)
              row = row + 1
          book.save(file_path)  # 使用完整的文件路徑來保存工作簿
      
          # 設(shè)置輸出目錄
      output_dir = r'C:\Users\Administrator\Desktop\2024年工作文件夾\研發(fā)績(jī)效考核\負(fù)載得分'
      
          # 導(dǎo)出Excel,使用帶日期時(shí)間的文件名
      export_excel(output_dir)
      

        

      posted @ 2024-03-21 16:15  小蕊-zr  閱讀(111)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 中年国产丰满熟女乱子正在播放| 久久亚洲日韩精品一区二区三区| 中文字幕人妻色偷偷久久| 精品午夜福利短视频一区| 国产精品中文第一字幕| 一区二区免费高清观看国产丝瓜| 亚洲高清乱码午夜电影网| 精品人妻av区乱码| 玖玖在线精品免费视频| 国产成人午夜精品影院| 峨眉山市| 国产亚洲亚洲国产一二区| 亚洲欧美偷国产日韩| 情欲少妇人妻100篇| 国产成人精品一区二区三| 亚洲成人高清av在线| 一本一道久久综合狠狠老| 国产精品久久久久7777| 国产99青青成人A在线| 精品无码av无码专区| 国产精品国产亚洲区久久| 国产视频一区二区三区麻豆| 亚洲精品欧美综合二区| 人妻在线无码一区二区三区| 亚洲精品一区三区三区在| 国产在线乱子伦一区二区| 黄色三级亚洲男人的天堂| 日韩国产精品区一区二区| 免费人成视频在线观看不卡| 亚洲国产精品日韩av专区| 精品精品亚洲高清a毛片| 日本熟妇人妻xxxxx人hd| 亚洲人成线无码7777| 久青草国产在视频在线观看| 中文字幕av高清片| 亚洲一区二区三区激情在线| 人妻少妇无码精品专区| 亚洲精品熟女国产| 国产亚洲精品综合一区二区| 乱人伦中文字幕成人网站在线| 亚洲最大成人在线播放|