Browse Source

iiiiiii

Signed-off-by: binren <zhangbr@elab-plus.com>
binren 4 years ago
parent
commit
657c3ed00c
2 changed files with 95 additions and 82 deletions
  1. 85 82
      jianye_report.py
  2. 10 0
      sql.py

+ 85 - 82
jianye_report.py

@@ -25,20 +25,33 @@ class JianYeReport(object):
         'baobeidaofang'
     ]
 
-    head_1 = ['城市', '项目名称', '浏览量', '浏览人数', '新增用户', '新增获电', '推荐用户', '分享获电', '裂变获电',
+    head_1 = ['区域', '城市', '项目名称', '浏览量', '浏览人数', '新增用户', '新增获电', '推荐用户', '分享获电', '裂变获电',
               '扫码到访数', '全民经纪人注册数', '老业主注册数', '报备成功数', '报备到访数']
     brand_id = '13'
 
+    head_2 = ['区域名称', '城市', '项目名称', '推荐人姓名', '推荐人手机号', '分享获电', '经纪人注册数', '报备成功数']
+
     sheet_names_1 = ['当日数据', '当月数据', '上线以来所有数据']
 
     def __init__(self):
         self.db = MysqlDB('bi_report')
-        time_range_1 = rpfu.get_prd_day()
-        time_range_2 = rpfu.get_time_range_month()
-        time_range_3 = rpfu.get_all_time_data_range()
-        self.pv_data_1 = self.pv_count(time_range_1)
-        self.pv_data_2 = self.pv_count(time_range_2)
-        self.pv_data_3 = self.pv_count(time_range_3)
+        self.time_range_1 = rpfu.get_prd_day()
+        self.time_range_2 = rpfu.get_time_range_month()
+        self.time_range_3 = rpfu.get_all_time_data_range()
+        self.pv_data_1 = self.pv_count(self.time_range_1)
+        self.pv_data_2 = self.pv_count(self.time_range_2)
+        self.pv_data_3 = self.pv_count(self.time_range_3)
+        self.house_region = self.get_house_region_info()
+        self.mail_util = EmailUtil()
+
+    def get_house_region(self):
+        return self.db.select(Sql.sql_15)
+
+    def get_house_region_name(self, house_id):
+        for x in self.house_region:
+            if str(x[1]) in house_id:
+                return x[3]
+        return ' '
 
     def get_city_house_id(self):
         return self.db.select(Sql.sql_1)
@@ -56,7 +69,7 @@ class JianYeReport(object):
         """
         month_day = rpfu.get_montho_day()
         if type == 1:
-            return '[{}]{}数据报表_{}'.format(month_day, region_name, name)
+            return ['[{}]{}数据报表_{}_项目明细'.format(month_day, region_name, name), '[{}]{}数据报表_{}_置业顾问完成情况'.format(month_day, region_name, name)]
         elif type == 2:
             return '[{}]建业云集团数据报表_{}'.format(month_day, name)
         elif type == 3:
@@ -178,12 +191,9 @@ class JianYeReport(object):
         :return:
         """
         result = []
-        time_rang_1 = rpfu.get_prd_day()
-        time_rang_2 = rpfu.get_time_range_month()
-        time_range_3 = rpfu.get_all_time_data_range()
-        result.extend(self.brand_data_of_time(time_rang_1, 1))
-        result.extend(self.brand_data_of_time(time_rang_2, 2))
-        result.extend(self.brand_data_of_time(time_range_3, 3))
+        result.extend(self.brand_data_of_time(self.time_range_1, 1))
+        result.extend(self.brand_data_of_time(self.time_range_2, 2))
+        result.extend(self.brand_data_of_time(self.time_range_3, 3))
         return result
 
     def get_house_pv_data(self, house_id, time_type):
@@ -229,6 +239,11 @@ class JianYeReport(object):
         result = []
         for id in house_ids:
             sub = []
+            for x in self.house_region:
+                if x[0] == str(id):
+                    sub.append(x[1])
+            if len(sub) == 0:
+                sub.append(' ')
             for x in city_info:
                 if str(id) == str(x[1]):
                     sub.extend([x[3], x[2]])
@@ -244,17 +259,20 @@ class JianYeReport(object):
                 if str(id) == str(x[0]):
                     sub.extend(x[1:])
             result.append(sub)
-        result.sort(key=lambda obj: obj[5], reverse=True)
+        result.sort(key=lambda obj: obj[6], reverse=True)
         return result
 
     def house_data(self, house_ids):
-        time_range_1 = rpfu.get_prd_day()
-        time_range_2 = rpfu.get_time_range_month()
-        time_range_3 = rpfu.get_all_time_data_range()
-        result = [self.house_data_of_time(time_range_1, house_ids, 1), self.house_data_of_time(time_range_2, house_ids, 2),
-                  self.house_data_of_time(time_range_3, house_ids, 3)]
+        result = [self.house_data_of_time(self.time_range_1, house_ids, 1), self.house_data_of_time(self.time_range_2, house_ids, 2),
+                  self.house_data_of_time(self.time_range_3, house_ids, 3)]
         return result
 
+    def get_table_3(self, house_ids):
+        day_data = self.db.select(Sql.sql_16, [self.time_range_1[0], house_ids])
+        month_data = self.db.select(Sql.sql_17, [self.time_range_2[1], house_ids])
+        all_data = self.db.select(Sql.sql_18, [self.time_range_3[1], house_ids])
+        return [day_data, month_data, all_data]
+
     def get_house_region_info(self):
         return self.db.select(Sql.sql_15)
 
@@ -264,17 +282,8 @@ class JianYeReport(object):
         :param: task_key
         :return:
         """
-        # 邮件发送参数
-        #                             mail_title,
-        #                             content,
-        #                             receiver,
-        #                             mail_excel,
-        #                             file_name,
-        #                             mail_excel_1=None,
-        #                             file_name_1=None
         message = {}
         send_mail_info = []
-        mail_util = EmailUtil()
         rfu = ReportFileUtils()
         customers = self.get_report_customers(task_key)
         message[0] = '客户信息获取成功'
@@ -284,25 +293,13 @@ class JianYeReport(object):
         try:
             save_path = FileUtil().save_path_create()
             send_data = []
-            # 查询数据
             if task_key == 12:
-                # 集团信息计算一次发送给多个人
                 brand_table_one = self.brand_data()
                 message['brand'] = 'success'
                 house_ids = self.get_house_id_by_brand_id('13')
                 brand_table_two = self.house_data(house_ids)
                 message['house'] = 'success'
-                # 总浏览量:xx ,总浏览人数:xx
-                #
-                # 新增获客: xx, 新增获电:xx
-                #
-                # 推荐用户数:xx,分享获电:xx,裂变获电:xx
-                #
-                # 全民经纪人注册数:xx
-                #
-                # 报备成功数:xx,报备到访数:xx
             for customer in customers:
-                # a.task_key, b.customer_type, b.name, b.mail, b.house_or_region, a.customer_id, GROUP_CONCAT(c.house_or_brand_id) as ids
                 name = customer[2]
                 customer_type = customer[1]
                 mail = customer[3]
@@ -313,60 +310,51 @@ class JianYeReport(object):
                 file_path = save_path + '/' + title + '.xls'
                 try:
                     if customer_type == 2:
-                        # 集团
                         content = self.get_brand_content(content, brand_table_one)
                         send_data.append(
                             [brand_table_two, self.sheet_names_1, title, [self.head_1, self.head_1, self.head_1],
                              file_path, content, name, mail])
-                        # rfu.create_excel_file(table_2, self.sheet_names_1, title, [self.head_1, self.head_1, self.head_1], file_path)
                     elif customer_type == 1:
-                        # 项目
+                        title_1, title_2 = title[0], title[1]
                         table_2 = self.house_data(self.get_house_ids(ids))
+                        table_3 = self.get_table_3(self.get_house_ids(ids))
+                        file_path_1 = save_path + '/' + title_2 + '.xls'
                         send_data.append(
-                            [table_2, self.sheet_names_1, title, [self.head_1, self.head_1, self.head_1], file_path,
-                             content, name, mail])
-                        # rfu.create_excel_file(table_2, self.sheet_names_1, title, [self.head_1, self.head_1, self.head_1], file_path)
+                            [table_2, self.sheet_names_1, title_1, [self.head_1, self.head_1, self.head_1], file_path,
+                             content, name, mail, title_2, [self.head_2, self.head_2, self.head_2], table_3, file_path_1])
                     elif customer_type == 3:
-                        # 区域
                         table_2 = self.house_data(self.get_house_ids(ids))
                         send_data.append(
                             [table_2, self.sheet_names_1, title, [self.head_1, self.head_1, self.head_1], file_path,
                              content, name, mail])
-                        # rfu.create_excel_file(table_2, self.sheet_names_1, title, [self.head_1, self.head_1, self.head_1], file_path)
                     else:
                         send_mail_log.append([name, mail, title, -1, '客户类型错误{}'.format(customer_type)])
                         pass
                 except Exception as e:
                     print(str(e))
-                    #  # name, mail, report_name, push_time, send_status, status, error_message
                     send_mail_log.append([name, mail, title, -1, '数据查询失败:{}'.format(str(e))])
             message['query_data'] = 'success'
-            # 生成文件
             for data in send_data:
                 try:
+                    send_mai_info_sub = []
                     rfu.create_excel_file(data[0], data[1], data[2], data[3], data[4])
-                    # [title, content, mail, file_path, title + '.xlsx', name]
-                    send_mail_info.append([data[2], data[5], data[7], data[4], data[2] + '.xls', data[6]])
+                    send_mai_info_sub.extend([data[2], data[5], data[7], data[4], data[2] + '.xls', data[6]])
+                    if len(data) == 11:
+                        rfu.create_excel_file(data[10], data[1], data[8], data[9], data[11])
+                        send_mai_info_sub.extend([data[11], data[8] + '.xls'])
+                    send_mail_info.append(send_mai_info_sub)
                 except Exception as e:
                     print(e)
                     send_mail_log.append([data[6], data[7], data[2], -1, '文件创建失败:{}'.format(str(e))])
             message['file'] = 'success'
-            # 发送邮件
             for mail in send_mail_info:
                 try:
-                    # for m in self.customer_mails:
-                    result = mail_util.send_mail_by_admin(mail[0], mail[1], mail[2], mail[3], mail[4])
-                    if result:
-                        # name, mail, report_name, push_time, send_status, status, error_message
-                        send_mail_log.append([mail[5], mail[2], mail[3], 1, 'success'])
-                    else:
-                        send_mail_log.append([mail[5], mail[2], mail[3], -1, '调用邮件接口失败:{}'.format(str(result))])
+                    self.send_mail(mail, send_mail_log)
                 except Exception as e:
                     print(str(e))
                     message['error1'] = str(e)
                     send_mail_log.append([mail[5], mail[2], mail[3], -1, '邮件发送失败:{}'.format(str(e))])
             message['mail'] = 'success'
-            # 写入日志
             self.db.add_some(Sql.sql_12, send_mail_log)
             message['log'] = 'success'
         except Exception as e:
@@ -420,10 +408,15 @@ class JianYeReport(object):
                     file_path = save_path + '/' + title + '.xls'
                     if customer_type == 1:
                         # 项目
-                        table_2 = self.house_data(ids)
+                        # 项目
+                        title_1, title_2 = title[0], title[1]
+                        table_2 = self.house_data(self.get_house_ids(ids))
+                        table_3 = self.get_table_3(self.get_house_ids(ids))
+                        file_path_1 = save_path + '/' + title_1 + '.xls'
                         send_data.append(
-                            [table_2, self.sheet_names_1, title, [self.head_1, self.head_1, self.head_1], file_path,
-                             content, name, mail])
+                            [table_2, self.sheet_names_1, title_1, [self.head_1, self.head_1, self.head_1], file_path,
+                             content, name, mail, title_2, [self.head_2, self.head_2, self.head_2], table_3,
+                             file_path_1])
                     elif customer_type == 2:
                         # 集团
                         brand_table_one = self.brand_data()
@@ -453,8 +446,15 @@ class JianYeReport(object):
         if len(send_data) > 0:
             for data in send_data:
                 try:
+                    send_mai_info_sub = []
                     rfu.create_excel_file(data[0], data[1], data[2], data[3], data[4])
-                    send_mail_info.append([data[2], data[5], data[7], data[4], data[2] + '.xls', data[6]])
+                    # [title, content, mail, file_path, title + '.xlsx', name]
+                    send_mai_info_sub.extend([data[2], data[5], data[7], data[4], data[2] + '.xls', data[6]])
+                    if len(data) == 11:
+                        #  data, sheet_names, title, headers, file_path
+                        rfu.create_excel_file(data[10], data[1], data[8], data[9], data[4])
+                        send_mai_info_sub.extend([data[11], data[8] + '.xls'])
+                    send_mail_info.append(send_mai_info_sub)
                 except Exception as e:
                     print(e)
                     message['excel文件创建失败'] = str(e)
@@ -462,26 +462,14 @@ class JianYeReport(object):
         else:
             message['excel_info'] = '需要生成excel的数据空'
         # 发送邮件
-        mail_util = EmailUtil()
         if len(send_data) > 0:
             for mail in send_mail_info:
                 try:
                     if new_mail:
-                        result = mail_util.send_mail_by_admin(mail[0], mail[1], new_mail, mail[3], mail[4])
-                        if result:
-                            # name, mail, report_name, push_time, send_status, status, error_message
-                            send_mail_log.append([mail[5], mail[2], mail[3], 1, 'success'])
-                        else:
-                            send_mail_log.append([mail[5], mail[2], mail[3], -1, 'fail:{}'.format(str(result))])
-                            pass
+                        self.send_mail(mail, send_mail_log)
                     else:
                         for m in self.customer_mails:
-                            result = mail_util.send_mail_by_admin(mail[0], mail[1], m, mail[3], mail[4])
-                            if result:
-                                # name, mail, report_name, push_time, send_status, status, error_message
-                                send_mail_log.append([mail[5], mail[2], mail[3], 1, 'success'])
-                            else:
-                                send_mail_log.append([mail[5], mail[2], mail[3], -1, 'fail'])
+                            self.send_mail(m, send_mail_log)
                 except Exception as e:
                     print(str(e))
                     message['邮件发送失败'] = str(e)
@@ -492,11 +480,26 @@ class JianYeReport(object):
         self.db.add_some(Sql.sql_12, send_mail_log)
         return message
 
+    def send_mail(self, mail, send_mail_log):
+        result = None
+        # for m in self.customer_mails:
+        if len(mail) == 6:
+            result = self.mail_util.send_mail_by_admin(mail[0], mail[1], mail[2], mail[3], mail[4])
+        elif len(mail) == 8:
+            result = self.mail_util.send_mail_by_admin(mail[0], mail[1], mail[2], mail[3], mail[4], mail[6],
+                                                  mail[7])
+        if result:
+            # name, mail, report_name, push_time, send_status, status, error_message
+            send_mail_log.append([mail[5], mail[2], mail[3], 1, 'success'])
+        else:
+            send_mail_log.append([mail[5], mail[2], mail[3], -1, '调用邮件接口失败:{}'.format(str(result))])
+        return send_mail_log
+
     def get_house_ids(self, ids_str):
         if str(ids_str).find(',') == -1:
-            return [ids_str]
+            return [str(ids_str)]
         else:
-            return [x for x in str(ids_str).split(',')]
+            return [str(x) for x in str(ids_str).split(',')]
 
 
 if __name__ == '__main__':

+ 10 - 0
sql.py

@@ -267,6 +267,16 @@ class Sql:
         select * from d_jianye_house_city_region_rlat
     """
 
+    sql_16 = """
+          SELECT b.region, b.city, a.house_name, a.advi_name, a.mobile, IFNULL(a.fx_mobile,0), IFNULL(a.zc_mobile, 0), IFNULL(a.bb_mobile, 0) FROM f_dm_jianye_agent_house_day a left join d_jianye_house_city_region_rlat b on a.house_id = b.house_id  where report_d = %s and house_id in %s
+    """
+    sql_17 = """
+          SELECT b.region, b.city, a.house_name, a.advi_name, a.mobile, IFNULL(a.fx_mobile,0), IFNULL(a.zc_mobile, 0), IFNULL(a.bb_mobile, 0) FROM f_dm_jianye_agent_house_month a left join d_jianye_house_city_region_rlat b on a.house_id = b.house_id  where report_d = %s and house_id in %s
+    """
+    sql_18 = """
+          SELECT b.region, b.city, a.house_name, a.advi_name, a.mobile, IFNULL(a.fx_mobile,0), IFNULL(a.zc_mobile, 0), IFNULL(a.bb_mobile, 0) FROM f_dm_jianye_agent_house_all a left join d_jianye_house_city_region_rlat b on a.house_id = b.house_id where report_d = %s and house_id in %s
+    """
+
 
 if __name__ == '__main__':
     print(len('222'))