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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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