Exemple #1
0
    def get(self, request):
        getParams = request.GET
        filter_date = getParams.get('filter_date', '')
        project_name = getParams.get('project_name', '')

        department_name = request.user.department.department_name
        if not project_name:
            project_name = -1

        # 创建查询条件
        plain_sql = filter_dev_event_sql(filter_date=filter_date,
                                         project_name=project_name,
                                         project_id='',
                                         department_name=department_name)
        #统计分析select dev_event_project_id, count((end_time-start_time)) as time_diff from api_devevent group by dev_event_project_id
        group_sql = u'select chinese_name,ROUND(sum(extract(EPOCH from child.end_time - child.start_time)/3600)::numeric,2)   as date_diff from ({0})  as child group by chinese_name order by date_diff desc '.format(
            plain_sql)
        row = fetch_data(group_sql)

        #转换数据为echarts能接受的格式
        x_data = [i['chinese_name'] for i in row]
        y_data = [i['date_diff'] for i in row]
        content = dict_to_json({'x_data': x_data, 'y_data': y_data})

        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #2
0
    def get(self, request):
        getParams = request.GET
        # employee_name= getParams.get('employee_name', '').strip()
        natural_week = getParams.get('natural_week', '')
        # department_name =u'销售部'
        #验证日期是否符合 2017-01的格式
        __match = re.compile('^\d{4}-\d{2}').match(natural_week)
        if __match:
            natural_week = __match.group()
        else:
            natural_week = get_day_of_week()

        user_id = get_user_id(request)

        data = WeekSummary.objects.filter(summary_owner=user_id).filter(
            natural_week=natural_week).all()

        result_field = [
            "id", "natural_week", "summary", "self_evaluation", "plan"
        ]
        data_dict = queryset_to_dict(data, result_field)
        content = dict_to_json(data_dict)

        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #3
0
    def get(self, request):
        getParams = request.GET
        filter_date = getParams.get('filter_date', '')
        employee_name = getParams.get('employee_name', '')

        if not employee_name:
            employee_name = u'空姓名'
        #error
        department_name = request.user.department.department_name
        # 创建查询条件
        plain_sql = filter_dev_event_sql(filter_date=filter_date,
                                         employee_name=employee_name,
                                         project_id='',
                                         project_name='',
                                         department_name='',
                                         user_id='')
        #统计分析
        group_sql = u'select event_date,event_type_name,ROUND(sum(duration_time/3600)::numeric,2) as date_diff from ({0}) as child  group by event_date,event_type_name order by event_date,event_type_name '.format(
            plain_sql)

        row = fetch_data(group_sql)
        #转换数据为echarts能接受的格式

        event_date_list = list(
            {i['event_date'].strftime("%Y-%m-%d")
             for i in row})  #取不重复的日期
        event_type_name_list = list({i['event_type_name']
                                     for i in row})  #取不重复的类型名称
        event_date_list.sort()
        result = {}
        for event_date in event_date_list:
            result[event_date] = {}
            for type_name in event_type_name_list:
                result[event_date][type_name] = 0
                for value in row:
                    if value.get('event_date').strftime(
                            "%Y-%m-%d") == event_date and value.get(
                                'event_type_name') == type_name:
                        result[event_date][type_name] = value.get(
                            'date_diff', 0)

        date_list = []
        time_count_list = {}
        for event_date in event_date_list:
            date_list.append(event_date)
            for type_name in event_type_name_list:
                if time_count_list.get(type_name):
                    time_count_list[type_name].append(
                        result[event_date].get(type_name))
                else:
                    time_count_list[type_name] = [
                        result[event_date].get(type_name)
                    ]

        content = dict_to_json({
            'date_list': date_list,
            'time_count_list': time_count_list
        })
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #4
0
    def get(self, request):
        getParams = request.GET
        natural_week = getParams.get('natural_week', '')
        employee_name = getParams.get('employee_name', '')
        # project_name = getParams.get('project_name', '')
        department_name = request.user.department.department_name

        user_id = chinesename_to_userid(employee_name)
        # 创建查询条件
        plain_sql = filter_sale_event_sql(natural_week=natural_week,
                                          user_id=user_id,
                                          department_name='')
        #统计分析
        # group_sql = u'select event_type_name,ROUND(sum(extract(EPOCH from child.end_time - child.start_time)/3600)::numeric,2) as date_diff from ({0}) as child  group by event_type_name '.format(plain_sql)

        data = fetch_data(plain_sql)
        result_list = []

        for row in data:
            result_dict = {}
            for key, value in row.items():
                result_dict[key] = value
            result_dict['which_day'] = day_of_week(str(row['visit_date']))
            result_list.append(result_dict)

        content = dict_to_json(result_list)
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #5
0
    def get(self, request):
        user_id = get_user_id(request)
        getParams = request.GET

        filter_date = getParams.get('filter_date', '')
        customer_id = getParams.get('customer_id', '')
        natural_week = getParams.get('natural_week', '')
        #如果传入了周数,则转成日期段
        # if filter_date:
        #     filter_date='-'.join(getfirstday(filter_date))

        plain_sql = filter_sale_event_sql(filter_date=filter_date,
                                          natural_week=natural_week,
                                          user_id=user_id,
                                          customer_id=customer_id,
                                          department_name='')
        data = fetch_data(plain_sql)
        result_list = []
        for row in data:
            result_dict = {}
            for key, value in row.items():
                result_dict[key] = value
            result_dict['which_day'] = day_of_week(str(row['visit_date']))
            result_list.append(result_dict)
        content = dict_to_json(result_list)
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #6
0
    def get(self, request):
        getParams = request.GET
        filter_date = getParams.get('filter_date', '')
        department_name = request.user.department.department_name
        if not department_name:
            department_name = u"空部门"
        # 创建查询条件
        plain_sql = filter_dev_event_sql(filter_date=filter_date,
                                         project_id='',
                                         project_name='',
                                         department_name=department_name,
                                         employee_name='',
                                         user_id='')
        #统计分析
        group_sql = u'select event_type_name,ROUND(sum(duration_time/3600)::numeric,2) as date_diff from ({0}) as child  group by event_type_name '.format(
            plain_sql)
        row = fetch_data(group_sql)
        #转换数据为echarts能接受的格式
        type_list = [i['event_type_name'] for i in row]
        type_count = [{
            'name': i['event_type_name'],
            'value': i['date_diff']
        } for i in row]

        content = dict_to_json({
            'type_list': type_list,
            'type_count': type_count
        })
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #7
0
 def get(self, request):
     data = SaleActiveType.objects.filter(closed_status=0).all()
     result_field = [
         "id", "active_type_name", "sale_active_type_remark", "create_time"
     ]
     data_dict = queryset_to_dict(data, result_field)
     content = dict_to_json(data_dict)
     response = my_response(code=0, msg=u"查询成功", content=content)
     return response
Exemple #8
0
 def get(self, request):
     data = DevProject.objects.filter(closed_status=0).all()
     result_field = [
         "id", "creater_id", "status", "dev_project_remark", "project_name",
         "create_time"
     ]
     data_dict = queryset_to_dict(data, result_field)
     content = dict_to_json(data_dict)
     response = my_response(code=0, msg=u"查询成功", content=content)
     return response
Exemple #9
0
 def get(self, request):
     data = SalePhase.objects.filter(closed_status=0).all()
     result_field = [
         "id", "phase_name", "description", "phase_count",
         "sale_phase_remark", "create_time"
     ]
     data_dict = queryset_to_dict(data, result_field)
     content = dict_to_json(data_dict)
     response = my_response(code=0, msg=u"查询成功", content=content)
     return response
Exemple #10
0
    def get(self, request):
        getParams = request.GET
        filter_date = getParams.get('filter_date', '')
        project_name = getParams.get('project_name', '')

        if not project_name:
            employee_name = u'空项目'
        #error
        department_name = request.user.department.department_name
        # 创建查询条件
        plain_sql = filter_dev_event_sql(filter_date=filter_date,
                                         project_name=project_name,
                                         project_id='',
                                         employee_name='',
                                         department_name=department_name,
                                         user_id='')
        #统计分析
        group_sql = u'select position_id, ROUND(sum(extract(EPOCH from child.end_time - child.start_time)/3600)::numeric,3)   as date_diff  from ({0}) as child group by position_id order by date_diff desc'.format(
            plain_sql)
        #加上职位的中文名称
        position_sql = u'select * from ({0}) as group_sql left join accounts_position as pos on pos.id=group_sql.position_id'.format(
            group_sql)
        row = fetch_data(position_sql)

        #转换数据为echarts能接受的格式
        x_data = [i['position_name'] for i in row]
        y_data = [i['date_diff'] for i in row]
        sum_y = sum(y_data)

        #做累加后减去总值然后
        def change(param, tempSum=0, result=[]):
            '''
            累加器
            '''
            for i in param:
                tempSum = i + tempSum
                result.append(tempSum)
            return result

        y_change = change(y_data)
        y_change_data = [abs(i - sum_y) for i in y_change]
        y_change_data.insert(0, 0)
        y_data.insert(0, sum_y)
        x_data.insert(0, u'总时间')
        content = dict_to_json({
            'x_data': x_data,
            'y_data': y_data,
            'y_change_data': y_change_data
        })
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #11
0
    def get(self, request):
        user_id = get_user_id(request)

        result_field = [
            "id", "full_name", "short_name", "contact_post", "contact_name",
            "contact_mdn", "contact_tel_num", "sale_customer_remark",
            "create_time"
        ]
        data = SaleCustomer.objects.filter(
            sale_customer_owner_id=user_id).all()
        data_dict = queryset_to_dict(data, result_field)
        content = dict_to_json(data_dict)
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #12
0
    def get(self, request):
        getParams = request.GET
        natural_week = getParams.get('natural_week', '')
        employee_name = getParams.get('employee_name', '')

        department_name = request.user.department.department_name

        # 创建查询条件
        if employee_name:
            plain_sql = filter_dev_event_sql(natural_week=natural_week,
                                             project_id='',
                                             department_name=department_name,
                                             employee_name=employee_name)
        else:
            return my_response(code=1, msg=u"缺少雇员姓名条件")

        #统计分析
        group_sql = u'select event_type_name,ROUND(sum(duration_time/3600)::numeric,2) as date_diff from ({0}) as child  group by event_type_name '.format(
            plain_sql)

        data = fetch_data(plain_sql)
        #先变换数据
        alternation_list = []
        event_date_list = []  #保存所有不重复的日期
        for key, value in enumerate(data):
            '''
            获取所有日期字段保存为list,并将需要的字段放入alternation_list备用
            '''
            event_date = value.get('event_date').strftime("%Y-%m-%d")
            event_date_list.append(event_date)
            data_list = [
                'project_name', 'event_type_name', 'description',
                'up_reporter_id', 'down_reporter_ids', 'fin_percentage',
                'dev_event_remark'
            ]
            field_data = {key: value.get(key) for key in data_list}
            field_data['duration_time'] = round(
                value.get('duration_time') / 3600, 1)
            field_data['event_date'] = event_date
            field_data['which_day'] = day_of_week(field_data['event_date'])
            field_data['up_reporter_name'] = userid_to_chinesename(
                value.get('up_reporter_id'))
            field_data['down_reporter_name'] = userid_to_chinesename(
                value.get('down_reporter_ids'))
            alternation_list.append(field_data)
        content = dict_to_json(alternation_list)
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #13
0
    def get(self, request):
        getParams = request.GET
        natural_week = getParams.get('natural_week', '')

        __match = re.compile('^\d{4}-\d{2}').match(natural_week)
        if __match:
            natural_week = __match.group()
        else:
            natural_week = get_day_of_week()

        data_dict = SaleTarget.objects.filter(natural_week=natural_week).values("id","phase_name__phase_name",\
                                "natural_week", "target", "phase_count","sale_target_remark",'sale_target_owner__chinese_name') \
                                .order_by('-natural_week','sale_target_owner__chinese_name','phase_name__phase_name')
        result_dict = list(data_dict)
        content = dict_to_json(result_dict)
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #14
0
    def get(self, request):
        getParams = request.GET
        # department_id = getParams.get('department_id', '')

        # if department_id:
        #     user_queryset=User.objects.filter(department_id=department_id).all()
        # else:
        user_queryset = User.objects.all()
        user_ids = tuple([i.id for i in user_queryset])
        data = User.objects.filter(pk__in=user_ids).all()
        query_field = [
            "id", "username", "chinese_name", "department", "position"
        ]
        data_dict = queryset_to_dict(data, query_field)
        content = dict_to_json(data_dict)

        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #15
0
    def get(self, request):
        getParams = request.GET
        natural_week = getParams.get('natural_week', '')
        department_name = request.user.department.department_name
        try:
            natural_week = natural_week[:7]
        except:
            natural_week = '2017-1'

        filter_sql = filter_sale_event_sql(natural_week=natural_week,
                                           department_name=department_name)
        # 联合目标和实际记录
        pivot_sql = pivot_target_actual_sql(natural_week=natural_week,
                                            filter_sql=filter_sql,
                                            department_name=department_name)
        data = fetch_data(pivot_sql)

        content = dict_to_json(data)
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #16
0
    def get(self, request):
        user_id = get_user_id(request)

        getParams = request.GET
        project_id = getParams.get('project_id', '')
        filter_date = getParams.get('filter_date', '')
        natural_week = getParams.get('natural_week', '')
        plain_sql = filter_dev_event_sql(filter_date=filter_date,
                                         natural_week=natural_week,
                                         project_id=project_id,
                                         user_id=user_id)
        query_result = fetch_data(plain_sql)

        alternation_list = []
        event_date_list = []  #保存所有不重复的日期
        for key, value in enumerate(query_result):
            '''
            获取所有日期字段保存为list,并将需要的字段放入alternation_list备用
            '''
            event_date = value.get('event_date').strftime("%Y-%m-%d")
            event_date_list.append(event_date)
            #限定返回给前端的字段
            data_list = [
                "dev_event_id", 'project_name', "start_time", "end_time",
                'duration_time', 'event_type_name', 'description',
                'up_reporter_id', 'down_reporter_ids', 'fin_percentage',
                'dev_event_remark'
            ]
            field_data = {key: value.get(key) for key in data_list}
            field_data['duration_time'] = round(
                field_data.get('duration_time') / 3600, 1)  #把秒数转成取一位小数的小时数
            field_data['event_date'] = event_date
            field_data['which_day'] = day_of_week(field_data.get('event_date'))
            field_data['up_reporter_name'] = userid_to_chinesename(
                value.get('up_reporter_id'))
            field_data['down_reporter_name'] = userid_to_chinesename(
                value.get('down_reporter_ids'))
            alternation_list.append(field_data)
        content = dict_to_json(alternation_list)
        response = my_response(code=0, msg=u"查询成功", content=content)
        return response
Exemple #17
0
    def get(self, request):
        getParams = request.GET
        filter_date = getParams.get('filter_date', '')
        department_name = request.user.department.department_name

        # 创建查询条件
        plain_sql = filter_dev_event_sql(filter_date=filter_date,
                                         project_id='',
                                         project_name='',
                                         department_name=department_name,
                                         employee_name='',
                                         user_id='')
        group_sql = u'select t1.chinese_name,(sum(t1.sum_time)/count(t1.event_date)) as avg_time from \
            (select t.chinese_name,sum(t.duration_time/3600) as sum_time,t.event_date from ({0}) as t  group by chinese_name,event_date) as  t1 \
            group by t1.chinese_name  order by avg_time desc'.format(plain_sql)
        row = fetch_data(group_sql)
        print(row)
        #转换数据为echarts能接受的格式
        x_data = [i['chinese_name'] for i in row]
        y_data = [round(i['avg_time'], 2) for i in row]
        content = dict_to_json({'x_data': x_data, 'y_data': y_data})

        response = my_response(code=0, msg=u"查询成功", content=content)
        return response