123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- from mysql_db import MysqlDB
- from itertools import groupby
- class TestInfo(object):
- """
- 测试回收情况
- """
- # 获取测试的答题记录情况
- sql_1 = '''
- SELECT
- a.testcase_id,
- a.title,
- a.sub_question_id,
- b.sub_question_content,
- a.score,
- b.sub_option_content,
- count(1)
- FROM
- f_t_daren_score_2 a
- LEFT JOIN d_shangju_tiku_02 b ON a. STATUS = b. STATUS = 1
- WHERE
- a.testcase_id = %s and
- a.testcase_id = b.testcase_id
- AND a.sub_question_id = b.sub_question_id
- AND (
- a.score = b.score
- OR a.score = b.sub_option_id
- )
- GROUP BY
- a.testcase_id,
- a.title,
- a.sub_question_id,
- b.sub_question_content,
- a.score,
- b.sub_option_content
- '''
- # 获取测试题信息
- sql_2 = '''
- SELECT
- id,
- group_type,
- title,
- house_ids,
- creator,
- created,
- updator,
- updated
- FROM
- bq_testcase
- WHERE
- STATUS = 1
- '''
- # 统计测试完成人数
- sql_3 = '''
- SELECT
- COUNT(DISTINCT uuid)
- FROM
- f_t_daren_score_2 a
- WHERE
- testcase_id = %s
- AND is_last = 1
- '''
- # 统计参与答题人数
- sql_4 = '''
- SELECT
- COUNT(DISTINCT uuid)
- FROM
- f_t_daren_score_2 a
- WHERE
- testcase_id = %s
- '''
- sql_5 = '''
- SELECT
- count(1)
- FROM
- f_t_daren_score_2
- WHERE
- testcase_id = %s
- '''
- sql_6 = '''
- SELECT
- score,
- COUNT(uuid)
- FROM
- (
- SELECT
- score,
- COUNT(DISTINCT uuid) AS uuid
- FROM
- f_t_daren_score_2
- WHERE
- testcase_id = 86
- AND sub_question_id = 377
- GROUP BY
- uuid
- ) a
- GROUP BY
- a.score
- '''
- # 支付力占比统计
- sql_7 = '''
-
- SELECT
- score,
- COUNT(uuid)
- FROM
- (
- SELECT
- score,
- COUNT(DISTINCT uuid) AS uuid
- FROM
- f_t_daren_score_2
- WHERE
- testcase_id in (84, 85, 86, 87)
- AND sub_question_id = 376
- GROUP BY
- uuid
- ) a
- GROUP BY
- a.score
- '''
- def __init__(self):
- # self.shangju_db = MysqlDB('shangju')
- self.bi_report_db = MysqlDB('bi_report')
- def test_detail_info(self, testcase_id):
- """
- 查看每套测试回收数据的量
- :return:
- """
- response = {}
- try:
- people = self.bi_report_db.select(self.sql_4, [testcase_id])[0][0]
- finished = self.bi_report_db.select(self.sql_3, [testcase_id])[0][0]
- result = self.bi_report_db.select(self.sql_1, [testcase_id])
- count = self.bi_report_db.select(self.sql_5, [testcase_id])
- answers = []
- for index, data in enumerate(result):
- if index == 0:
- response['testcase_id'] = data[0]
- response['title'] = data[1]
- response['答题记录数'] = count[0][0]
- response['答题人数'] = people
- response['完成人数'] = finished
- if people != 0:
- response['答题完成率'] = float(finished) / float(people)
- else:
- response['答题完成率'] = '无法统计'
- answers.append([data[2], data[3], data[4], data[5], data[6]])
- answers.sort(key=lambda obj: obj[0])
- sub_question_data = []
- for sub_question_id, others in groupby(answers, key=lambda obj: obj[0]):
- others_data = []
- for ot in others:
- others_data.append([x for x in ot])
- sub_question = {}
- sub_question['id'] = sub_question_id
- sub_question['题干'] = others_data[0][1]
- sub_option = []
- for th in others_data:
- sub_option.append([th[2], th[3], th[4]])
- sub_question['option'] = sub_option
- sub_question_data.append(sub_question)
- response['答题结果统计'] = sub_question_data
- except Exception as e:
- response['error'] = str(e)
- return response
|