def ding_report(self,robotname,proid): data=self.get_project_taskinfo(proid) if robotname =="yd": cols=["任务","进度"] data=data[cols] data2=data.to_markdown(index=False) dingRobot(robotname).markdown(str(self.day)+"项目日报",data2) else: data2=data.to_markdown(index=False) dingRobot(robotname).markdown(str(self.day)+"项目日报",data2)
def dingreport_userbug(self, robotname): bl = self.ubug # bugurl="http://yunbg.zen.websaas.cn/zentao/bug-view-"+bugid+".html" data = "" for i, t in bl.iterrows(): id = t['id'] title = t['title'] data += "[" + title + "](http://yunbg.zen.websaas.cn/zentao/bug-view-" + str( id) + ".html) \n " dingRobot(robotname).markdown(str(self.day) + "运维提报缺陷汇总", data)
def dingreport_today_bug(self, robotname, proid): bl = self.get_peoject_buglist(proid) print(bl) # bugurl="http://yunbg.zen.websaas.cn/zentao/bug-view-"+bugid+".html" data = "" for i, t in bl.iterrows(): id = t['id'] title = t['BUG标题'] status = t['状态'] tname = t['提报人'] dname = t['修改人'] data += "[" + title + "](http://yunbg.zen.websaas.cn/zentao/bug-view-" + str( id ) + ".html) \n" + "测试:" + tname + " 研发:" + dname + " 缺陷状态:" + status + " \n " dingRobot(robotname).markdown(str(self.day) + "待修复缺陷汇总", data)
def ding_report_daily(self,robotname): c2=['部门名称','日报率','已报人数'] d2=self.daily_report2[c2] data2=d2.to_markdown(index=False) dingRobot(robotname).markdown(str(self.day)+"日报率",data2) listType = self.daily_report1[self.daily_report1['部门名称'].notna()]['部门名称'].unique() for gn in listType: r=self.daily_report1[self.daily_report1['部门名称']==gn] #dept_owner=r['负责人'].head(1).values[0] o_mobile=r['手机号'].head(1).values[0] a = r.sort_values(by='姓名', ascending=True, inplace=False) c1 = ['姓名', '任务', '进度'] c=a[c1].to_markdown(index=False) dingRobot(robotname).markdown(gn+"-"+str(self.day),c,o_mobile)
def get_bugs_resolve(self): zentaodb = self.zentaodb ''' 返回各个项目当天解决bug数 :param 版本id, 项目id: ''' # sql 查询基本语句 project_sql = "select id,name FROM zt_project " bug_sql = "SELECT project,COUNT(id),type,module,openedBy from zentao.zt_bug WHERE DATE_FORMAT(resolvedDate,'%Y%m%d')= DATE_FORMAT(CURRENT_DATE,'%Y%m%d') AND deleted = '0' AND (status = 'resolved' OR status = 'closed') GROUP BY project desc " user_sql = "select account,realname,dept,mobile from zt_user" project_sql = "select id,name from zt_project" module_sql = "SELECT id,name FROM zt_module" dept_sql = "select id,name,manager from zt_dept" project = pd.read_sql_query(project_sql, zentaodb) bug = pd.read_sql_query(bug_sql, zentaodb) user = pd.read_sql_query(user_sql, zentaodb) project = pd.read_sql_query(project_sql, zentaodb) dept = pd.read_sql_query(dept_sql, zentaodb) print(bug) module = pd.read_sql_query(module_sql, zentaodb) d1 = pd.merge(bug, user, how="left", left_on="openedBy", right_on="account") cols1 = ['project', 'COUNT(id)', 'type', 'realname', 'module'] res1 = d1[cols1] print(res1) d2 = pd.merge(res1, project, how="left", left_on="project", right_on="id") cols2 = ['name', 'COUNT(id)', 'type', 'realname', 'module'] res2 = d2[cols2] res2.rename( columns={'name': '项目名称', 'COUNT(id)': '当天解决bug数', 'type': 'bug类型', 'realname': 'bug创建者', 'module': 'bug所属模块'}, inplace=True) cols3 = ['项目名称', '当天解决bug数', 'bug类型', 'bug创建者', 'bug所属模块'] res2 = res2[cols3] print(res2) d3 = pd.merge(res2, module, how="left", left_on="bug所属模块", right_on="id") print(d3) cols3 = ['项目名称', '当天解决bug数', 'bug类型', 'bug创建者', 'name'] res3 = d3[cols3] res3.rename(columns={'name': 'bug所属模块'}, inplace=True) print(res3.to_string()) print(res3) a = dingRobot('test') title = ("各个项目当天解决bug数:\n") content = str(res3) a.markdown(title, content)
def get_again_bugs(self): zentaodb = self.zentaodb ''' 返回各个项目重复激活bug数 :param 版本id, 项目id: ''' # sql 查询基本语句 project_sql = "select id,name FROM zt_project " bug_sql = "SELECT project,COUNT(id),type,module,openedBy,activatedCount FROM zt_bug WHERE activatedCount >=1 AND deleted = '0' AND status != 'closed' GROUP BY project" user_sql = "select account,realname,dept,mobile from zt_user" project_sql = "select id,name from zt_project" module_sql = "SELECT id,name FROM zt_module" dept_sql = "select id,name,manager from zt_dept" project = pd.read_sql_query(project_sql, zentaodb) bug = pd.read_sql_query(bug_sql, zentaodb) user = pd.read_sql_query(user_sql, zentaodb) project = pd.read_sql_query(project_sql, zentaodb) dept = pd.read_sql_query(dept_sql, zentaodb) module = pd.read_sql_query(module_sql, zentaodb) d1 = pd.merge(bug, user, how="left", left_on="openedBy", right_on="account") cols1 = ['project', 'COUNT(id)', 'type', 'realname', 'module','activatedCount'] res1 = d1[cols1] print(res1) # d2 = pd.merge(res1, project, how="left", left_on="project", right_on="id") cols2 = ['name', 'COUNT(id)', 'type', 'realname', 'module','activatedCount'] res2 = d2[cols2] res2.rename( columns={'name': '项目名称', 'COUNT(id)': '重复激活bug数', 'type': 'bug类型', 'realname': 'bug创建者', 'module': 'bug所属模块','activatedCount':'激活次数'}, inplace=True) cols3 = ['项目名称', '重复激活bug数', 'bug类型', 'bug创建者', 'bug所属模块', '激活次数'] res2 = res2[cols3] print(res2) d3 = pd.merge(res2, module, how="left", left_on="bug所属模块", right_on="id") print(d3) cols3 = ['项目名称', '重复激活bug数', 'bug类型', 'bug创建者', 'name','激活次数'] res3 = d3[cols3] res3.rename(columns={'name': 'bug所属模块'}, inplace=True) print(res3.to_string()) print(res3) a = dingRobot('test') title = ("重复激活bug数量:\n") content = str(res3) a.markdown(title, content)
def get_project_bug_resolve(self,mid): """ 返回某个项目当天解决的bug数量 :param mid: :return: """ name_sql = "select name FROM zt_project WHERE id = {}".format(mid) test_sql = "SELECT project, COUNT(id) from zt_bug WHERE project = {} AND DATE_FORMAT(resolvedDate,'%Y%m%d')= DATE_FORMAT(CURRENT_DATE,'%Y%m%d') AND deleted = '0' AND status = 'resolved' or status = 'closed' GROUP BY project;;".format( mid) mydb = MyDbHelper("zentao") project = mydb.get_one(name_sql) result = mydb.get_all(test_sql) result[0].update({"项目名称": result[0].pop("project")}) result[0].update({"当天解决bug数": result[0].pop("COUNT(id)")}) result[0]['项目名称'] = project['name'] a = dingRobot('test') title = ("当天解决的bug数汇总:\n") content = str(result[0]) a.markdown(title,content)
def get_test_bugs(self, mid): ''' 返回某个项目每天新增的bug数 :param 版本id, 项目id: :return: ([{'project': 'mid', 'COUNT(id)': 新增bug数, 'openedBy': '提出者'}] ''' name_sql = "select name FROM zt_project WHERE id = {}".format(mid) test_sql = ("SELECT d.name 项目名称,COUNT( a.id ) 新增bug数,a.type bug类型,b.realname bug提出者,c.name bug类型 FROM zt_bug a " "join zt_user b on a.openedBy = b.account join zt_module c ON a.module = c.id join zt_project d ON a.project = d.id " "WHERE a.project = {} AND DATE_FORMAT( a.openedDate, '%Y-%m-%d' )= CURRENT_DATE AND a.deleted = '0' GROUP BY a.openedBy;").format(mid) mydb = MyDbHelper("zentao") result = mydb.get_all(test_sql) test_list = [] for item in result: if item['bug类型'] == "front": item['bug类型'] = "前端代码问题" elif item['bug类型'] == "codeerror": item['bug类型'] = "后端代码问题" elif item['bug类型'] == "history": item['bug类型'] = "历史遗留" elif item['bug类型'] == "install": item['bug类型'] = "安装部署" elif item['bug类型'] == "others": item['bug类型'] = "其他" elif item['bug类型'] == "designdefect": item['bug类型'] = "需求文档" elif item['bug类型'] == "security": item['bug类型'] = "安全问题" elif item['bug类型'] == "user": item['bug类型'] = "运营反馈" elif item['bug类型'] == "automation": item['bug类型'] = "测试脚本" test_list.append(item) a = dingRobot('test') title = ("当天新增的bug数量:\n") content = str(test_list) a.markdown(title, content)