示例#1
0
    def cal(self, datas):
        data = datas
        dateStarts = str(self.dateStart.dateTime().toPyDateTime())
        dateEnds = str(self.dateEnd.dateTime().toPyDateTime())
        dateStart = dateStarts[0:10]
        dateEnd = dateEnds[0:10]
        if dateStart > dateEnd:
            QMessageBox.warning(self, "提示", "选取时间有误!!!")
        else:
            select = self.comboBox_2.currentText()
            cal_group_name = self.comboBox_3.currentText()
            # cal_group = np.unique(data[cal_group_name].values).tolist()
            cal_group = set(data[cal_group_name].values)
            # print("cal_group:", cal_group)
            # print(dateEnd)

            # ①当期回访量:根据“时间段”判断“列T - 回访时间”包含在“开始时间”及“结束时间”之间的excel行数(即工单数);
            data_cur_visit = data[(data['回访时间'] <= dateEnd)
                                  & (data['回访时间'] >= dateStart)]
            # print("data_cur_visit:", data_cur_visit['回访时间'].count())
            # ②当期有效回访量:根据“时间段”判断“列T - 回访时间”包含在“开始时间”及“结束时间”之间,且“列S - 回访状态”为“有效回访”的excel行数(即工单数)
            data_cur_valid_visit = data[(data['回访时间'] <= dateEnd)
                                        & (data['回访时间'] >= dateStart) &
                                        (data['回访状态'] == '有效回访')]

            # ④当期回访满意工单量:根据“时间段”判断“列T - 回访时间”包含在“开始时间”及“结束时间”之间,且“列S - 回访状态”为“有效回访”,且“列X - 您对本次维修总体的满意度感受如何?”为“非常满意”或“满意”的excel行数(即工单数);
            data_cur_visit_satisfy = data[
                (data['回访时间'] <= dateEnd) & (data['回访时间'] >= dateStart) &
                (data['回访状态'] == '有效回访') &
                ((data['您对本次维修总体的满意度感受如何?'] == '非常满意') |
                 (data['您对本次维修总体的满意度感受如何?'] == '满意'))]

            # ⑤当年累计回访量
            dateStartYear = self.string2Year(dateStarts)
            dateEndYear = self.string2Year(dateEnds)
            if dateEndYear == dateStartYear:
                dateEndYear = str(int(dateEndYear) + 1)
            elif dateEndYear > dateStartYear:
                pass
            elif dateEndYear < dateStartYear:
                pass

            data_cur_visit_year = data[(data['回访时间'] <= dateEndYear)
                                       & (data['回访时间'] >= dateStartYear)]

            # ⑥当年累计有效回访量
            data_cur_valid_visit_year = data[(data['回访时间'] <= dateEndYear)
                                             & (data['回访时间'] >= dateStartYear)
                                             & (data['回访状态'] == '有效回访')]

            # ⑧当年累计回访满意工单
            data_cur_valid_visit_satisfy_year = data[
                (data['回访时间'] <= dateEndYear) & (data['回访时间'] >= dateStartYear)
                & (data['回访状态'] == '有效回访') &
                ((data['您对本次维修总体的满意度感受如何?'] == '非常满意') |
                 (data['您对本次维修总体的满意度感受如何?'] == '满意'))]

            group_name = []
            cur_visit_list = []
            cur_valie_visit_list = []
            cur_valie_visit_rate_list = []
            cur_visit_satisfy_list = []
            cur_visit_satisfy_rate_list = []
            cur_visit_year_list = []
            cur_valid_visit_year_list = []
            cur_valid_visit_year_rate_list = []
            cur_valid_visit_satisfy_year_list = []
            cur_valid_visit_stasify_year_rate_list = []

            items = []
            for group in cal_group:
                cur_visit = 0
                cur_valie_visit = 0
                cur_valie_visit_rate = 0.0
                cur_visit_satisfy = 0
                cur_visit_satisfy_rate = 0.0
                cur_visit_year = 0
                cur_valid_visit_year = 0
                cur_valid_visit_year_rate = 0.0
                cur_valid_visit_satisfy_year = 0
                cur_valid_visit_stasify_year_rate = 0.0

                # print("group:", group)
                if cal_group_name == "分期":
                    pre_group = set(
                        data[data[cal_group_name] == group]['项目'].values)
                    for pre in pre_group:
                        item = []
                        item.append(pre + group)
                        # 1.当前回访量
                        data_cur_tmp = data_cur_visit[
                            (data_cur_visit[cal_group_name] == group)
                            & (data_cur_visit['项目'] == pre)]
                        cur_visit = data_cur_tmp["回访时间"].count()

                        # 2.当前有效回访量
                        data_cur_valid_visit_tmp = data_cur_valid_visit[
                            (data_cur_valid_visit[cal_group_name] == group)
                            & (data_cur_valid_visit['项目'] == pre)]
                        cur_valie_visit = data_cur_valid_visit_tmp[
                            "回访时间"].count()

                        # print("cur_valie_visit:", cur_valie_visit)
                        # 3.当期有效回访率=②当期有效回访量/①当期回访量
                        if cur_visit != 0:
                            cur_valie_visit_rate = round(
                                cur_valie_visit / cur_visit, 4)

                        # 4.当期回访满意工单量
                        data_cur_visit_satisfy_tmp = data_cur_visit_satisfy[
                            (data_cur_visit_satisfy[cal_group_name] == group)
                            & (data_cur_visit_satisfy['项目'] == pre)]
                        cur_visit_satisfy = data_cur_visit_satisfy_tmp[
                            '回访时间'].count()

                        # 当期回访满意度
                        if cur_valie_visit != 0:
                            cur_visit_satisfy_rate = round(
                                cur_visit_satisfy / cur_valie_visit, 4)

                        # 5.当年累计回访量
                        data_cur_visit_year_tmp = data_cur_visit_year[
                            (data_cur_visit_year[cal_group_name] == group)
                            & (data_cur_visit_year['项目'] == pre)]
                        cur_visit_year = data_cur_visit_year_tmp['回访时间'].count(
                        )

                        # print("cur_visit_year:", cur_visit_year)
                        # 6.当年累计有效回访量
                        data_cur_valid_visit_year_tmp = data_cur_valid_visit_year[
                            (data_cur_valid_visit_year[cal_group_name] == group
                             ) & (data_cur_valid_visit_year['项目'] == pre)]
                        cur_valid_visit_year = data_cur_valid_visit_year_tmp[
                            '回访时间'].count()

                        # 7.当年累计有效回访率
                        if cur_valid_visit_year != 0:
                            cur_valid_visit_year_rate = round(
                                cur_valid_visit_year / cur_visit_year, 4)

                        # 8.当年累计回访满意工单
                        data_cur_valid_visit_satisfy_year_tmp = data_cur_valid_visit_satisfy_year[
                            (data_cur_valid_visit_satisfy_year[cal_group_name]
                             == group)
                            & (data_cur_valid_visit_satisfy_year['项目'] == pre)]
                        cur_valid_visit_satisfy_year = data_cur_valid_visit_satisfy_year_tmp[
                            '回访时间'].count()

                        # 9.当年累计回访满意度
                        if cur_valid_visit_year != 0:
                            cur_valid_visit_stasify_year_rate = round(
                                cur_valid_visit_satisfy_year /
                                cur_valid_visit_year, 4)
                        else:
                            pass

                        group_name.append(pre + group)
                        cur_visit_list.append(cur_visit)
                        cur_valie_visit_list.append(cur_valie_visit)
                        cur_valie_visit_rate_list.append(cur_valie_visit_rate)
                        cur_visit_satisfy_list.append(cur_visit_satisfy)
                        cur_visit_satisfy_rate_list.append(
                            cur_visit_satisfy_rate)
                        cur_visit_year_list.append(cur_visit_year)
                        cur_valid_visit_year_list.append(cur_valid_visit_year)
                        cur_valid_visit_year_rate_list.append(
                            cur_valid_visit_year_rate)
                        cur_valid_visit_satisfy_year_list.append(
                            cur_valid_visit_satisfy_year)
                        cur_valid_visit_stasify_year_rate_list.append(
                            cur_valid_visit_stasify_year_rate)

                        item.append(cur_visit)
                        item.append(cur_valie_visit)
                        item.append(cur_valie_visit_rate)
                        item.append(cur_visit_satisfy)
                        item.append(cur_visit_satisfy_rate)
                        item.append(cur_visit_year)
                        item.append(cur_valid_visit_year)
                        item.append(cur_valid_visit_year_rate)
                        item.append(cur_valid_visit_satisfy_year)
                        item.append(cur_valid_visit_stasify_year_rate)

                        items.append(item)

                        for i in range(len(items)):
                            item = items[i]
                            row = self.tableWidget.rowCount()
                            self.tableWidget.insertRow(row)
                            for j in range(len(item)):
                                item = QTableWidgetItem(str(items[i][j]))
                                self.tableWidget.setItem(row, j, item)
                        items = []
                        self.pd_dict = {
                            '分组条件': group_name,
                            '当期回访量': cur_visit_list,
                            '当期有效回访量': cur_valie_visit_list,
                            '当期有效回访率': cur_valie_visit_rate_list,
                            '当期回访满意工单量': cur_visit_satisfy_list,
                            '当期回访满意度': cur_visit_satisfy_rate_list,
                            '当年累计有效回访量': cur_valid_visit_year_list,
                            '当年累计回访量': cur_visit_year_list,
                            '当年累计有效回访率': cur_valid_visit_year_rate_list,
                            '当年累计回访满意工单': cur_valid_visit_satisfy_year_list,
                            '当年累计回访满意度': cur_valid_visit_stasify_year_rate_list
                        }
                else:
                    item = []
                    item.append(group)
                    # 1.当前回访量
                    data_cur_tmp = data_cur_visit[
                        data_cur_visit[cal_group_name] == group]
                    cur_visit = data_cur_tmp["回访时间"].count()

                    # 2.当前有效回访量
                    data_cur_valid_visit_tmp = data_cur_valid_visit[
                        data_cur_valid_visit[cal_group_name] == group]
                    cur_valie_visit = data_cur_valid_visit_tmp["回访时间"].count()

                    # 3.当期有效回访率=②当期有效回访量/①当期回访量
                    if cur_visit != 0:
                        cur_valie_visit_rate = round(
                            cur_valie_visit / cur_visit, 4)

                    # 4.当期回访满意工单量
                    data_cur_visit_satisfy_tmp = data_cur_visit_satisfy[
                        data_cur_visit_satisfy[cal_group_name] == group]
                    cur_visit_satisfy = data_cur_visit_satisfy_tmp[
                        '回访时间'].count()

                    # 当期回访满意度
                    if cur_valie_visit != 0:
                        cur_visit_satisfy_rate = round(
                            cur_visit_satisfy / cur_valie_visit, 4)

                    # 5.当年累计回访量
                    data_cur_visit_year_tmp = data_cur_visit_year[
                        data_cur_visit_year[cal_group_name] == group]
                    cur_visit_year = data_cur_visit_year_tmp['回访时间'].count()

                    # 6.当年累计有效回访量
                    data_cur_valid_visit_year_tmp = data_cur_valid_visit_year[
                        data_cur_valid_visit_year[cal_group_name] == group]
                    cur_valid_visit_year = data_cur_valid_visit_year_tmp[
                        '回访时间'].count()

                    # 7.当年累计有效回访率
                    if cur_valid_visit_year != 0:
                        cur_valid_visit_year_rate = round(
                            cur_valid_visit_year / cur_visit_year, 4)

                    # 8.当年累计回访满意工单
                    data_cur_valid_visit_satisfy_year_tmp = data_cur_valid_visit_satisfy_year[
                        data_cur_valid_visit_satisfy_year[cal_group_name] ==
                        group]
                    cur_valid_visit_stasify_year = data_cur_valid_visit_satisfy_year_tmp[
                        '回访时间'].count()

                    # 9.当年累计回访满意度
                    if cur_valid_visit_year != 0:
                        cur_valid_visit_stasify_year_rate = round(
                            cur_valid_visit_stasify_year /
                            cur_valid_visit_year, 4)
                    else:
                        pass

                    group_name.append(group)
                    cur_visit_list.append(cur_visit)
                    cur_valie_visit_list.append(cur_valie_visit)
                    cur_valie_visit_rate_list.append(cur_valie_visit_rate)
                    cur_visit_satisfy_list.append(cur_visit_satisfy)
                    cur_visit_satisfy_rate_list.append(cur_visit_satisfy_rate)
                    cur_visit_year_list.append(cur_visit_year)
                    cur_valid_visit_year_list.append(cur_valid_visit_year)
                    cur_valid_visit_year_rate_list.append(
                        cur_valid_visit_year_rate)
                    cur_valid_visit_satisfy_year_list.append(
                        cur_valid_visit_satisfy_year)
                    cur_valid_visit_stasify_year_rate_list.append(
                        cur_valid_visit_stasify_year_rate)

                    item.append(cur_visit)
                    item.append(cur_valie_visit)
                    item.append(cur_valie_visit_rate)
                    item.append(cur_visit_satisfy)
                    item.append(cur_visit_satisfy_rate)
                    item.append(cur_visit_year)
                    item.append(cur_valid_visit_year)
                    item.append(cur_valid_visit_year_rate)
                    item.append(cur_valid_visit_stasify_year)
                    item.append(cur_valid_visit_stasify_year_rate)

                    items.append(item)

                    for i in range(len(items)):
                        item = items[i]
                        row = self.tableWidget.rowCount()
                        self.tableWidget.insertRow(row)
                        for j in range(len(item)):
                            item = QTableWidgetItem(str(items[i][j]))
                            self.tableWidget.setItem(row, j, item)
                    items = []
                    self.pd_dict = {
                        '分组条件': group_name,
                        '当期回访量': cur_visit_list,
                        '当期有效回访量': cur_valie_visit_list,
                        '当期有效回访率': cur_valie_visit_rate_list,
                        '当期回访满意工单量': cur_visit_satisfy_list,
                        '当期回访满意度': cur_visit_satisfy_rate_list,
                        '当年累计有效回访量': cur_valid_visit_year_list,
                        '当年累计回访量': cur_visit_year_list,
                        '当年累计有效回访率': cur_valid_visit_year_rate_list,
                        '当年累计回访满意工单': cur_valid_visit_satisfy_year_list,
                        '当年累计回访满意度': cur_valid_visit_stasify_year_rate_list
                    }

                    for i in range(len(items)):
                        item = items[i]
                        row = self.tableWidget.rowCount()
                        self.tableWidget.insertRow(row)
                        for j in range(len(item)):
                            item = QTableWidgetItem(str(items[i][j]))
                            self.tableWidget.setItem(row, j, item)