Пример #1
0
    def post(self, request):
        user_id = get_user_id(request)
        content = {"id": 0}
        data = request.POST
        insert_field = [
            "full_name", "short_name", "contact_post", "contact_name",
            "contact_mdn", "contact_tel_num", "sale_customer_remark"
        ]
        result = {}
        for t in insert_field:
            field_value = data.get(t, None)
            if field_value:
                result[t] = field_value.strip()

        customer_exist = SaleCustomer.objects.filter(
            full_name=result.get('full_name')).all()
        if customer_exist:
            return my_response(code=1, msg=u"客户已存在")
        result['sale_customer_owner_id'] = user_id

        if result:
            insert_process = SaleCustomer(**result)
            try:
                insert_process.save()
                content = {"id": insert_process.id}

                response = my_response(code=0,
                                       msg=u'恭喜你,新增成功',
                                       content=content)
            except:
                response = my_response(code=1, msg=u'插入失败', content=content)
        return response
Пример #2
0
    def post(self, request):
        user_id = get_user_id(request)
        data = request.POST

        insert_field = [
            "visit_date", "cus_con_post", "cus_con_mdn", "cus_con_tel_num",
            "cus_con_wechart", "communicate_record", "sale_event_remark",
            "sale_phase_id", "active_type_id", "sale_customer_id"
        ]
        result = {}
        for t in insert_field:
            field_value = data.get(t, None)
            if field_value:
                result[t] = field_value.strip()

        result['sale_event_owner_id'] = user_id
        content = {"id": 0}

        if result:
            insert_process = SaleEvent(**result)
            try:
                insert_process.save()
                content = {"id": insert_process.id}
                response = my_response(code=0,
                                       msg=u"新增拜访记录成功",
                                       content=content)
            except:
                response = my_response(code=1,
                                       msg=u"新增失败,可能漏填项目",
                                       content=content)
        return response
Пример #3
0
    def post(self, request):
        user_id = get_user_id(request)
        data = request.POST

        insert_field = ["natural_week", "summary", "self_evaluation", "plan"]
        result = {}
        for t in insert_field:
            result[t] = data.get(t, None).strip()

        natural_week = result['natural_week'][:7]
        __match = re.compile('^\d{4}-\d{2}').match(natural_week)

        if __match:
            result['natural_week'] = __match.group()
        else:
            return my_response(code=1, msg=u"自然周填写格式错误", content='')
        result['summary_owner_id'] = user_id

        if result:
            content = {"id": 0}
            insert_process = WeekSummary(**result)
            try:
                insert_process.save()
                content = {"id": insert_process.id}
                response = my_response(code=0, msg=u"插入成功", content=content)
            except:
                response = my_response(code=1, msg=u"插入失败", content=content)
        return response
Пример #4
0
 def get(self, request):
     user_id = get_user_id(request)
     data = request.GET
     delID = data.get("delID", -1)
     del_queryset = WeekSummary.objects.filter(id=delID).first()
     if not del_queryset:
         return my_response(code=1, msg=u"删除失败,可能已经不存在")
     if del_queryset.summary_owner_id == user_id:
         deleted_id = del_queryset.delete()
         content = {"id": deleted_id}
         response = my_response(code=0, msg=u"删除成功", content=content)
     else:
         response = my_response(code=1, msg=u"你不是该记录的所有人")
     return response
Пример #5
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
Пример #6
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
Пример #7
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
Пример #8
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
Пример #9
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
Пример #10
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
Пример #11
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
Пример #12
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
Пример #13
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
Пример #14
0
    def post(self, request):
        form = RegisterForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            username = data['username']
            # chinese_name = data['chinese_name']
            # group_name = data['group_name']
            password = data['password']
            password2 = data['password']

            if not User.objects.all().filter(username=username):
                user = User.objects.create_user(username, '', password)
                user.save()
                # login_validate(request, username, password)
                return my_response(code=0, msg="注册成功", content="")
            else:

                return my_response(code=1, msg="用户已存在", content="")
        return my_response(code=1, msg="用户已存在", content="")
Пример #15
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
Пример #16
0
    def post(self, request):
        uf = UserForm(request.POST)
        if uf.is_valid():
            # 获取表单用户密码
            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            # 获取的表单数据与数据库进行比较
            user = authenticate(username=username, password=password)
            if user is not None and user.is_active:
                # login(request, user)
                sid = get_random()
                auth.login(request, user)
                user_object = User.objects.get(username=username)
                try:
                    chinese_name = user_object.chinese_name
                    position_id = user_object.position.id
                    department_id = user_object.department.id
                except:
                    chinese_name = ''
                    position_id = ''
                    department_id = ''
                user_id = user_object.id
                userGroup_sql = "select * from accounts_user_groups as ug join auth_group as auth on auth.id=ug.group_id where ug.user_id={0}".format(
                    user_id)

                row = fetch_data(userGroup_sql)
                group_list = [v.get("name") for v in row]

                content = {"username": username, "chinese_name": chinese_name,\
                           "position_id": position_id, "user_id": user_id,\
                           "department_id":department_id,"group_list":group_list}

                response = my_response(code=0, msg="登录成功!", content=content)
                # login(request, user)
                cache.set(sid, content, timeout=self.cookie_timeout)
                response.set_cookie("sid",
                                    sid)  # , max_age=self.cookie_timeout)

                return response
            else:
                return my_response(code=1, msg="账号密码错误!")
        return my_response(code=1, msg="输入内容不合法")
Пример #17
0
    def post(self, request):
        user_id = get_user_id(request)
        data = request.POST

        insert_field = [
            "description", "event_date", "start_time", "end_time",
            "fin_percentage", "up_reporter_id", "down_reporter_ids",
            "dev_event_remark", "dev_event_project_id", "dev_event_type_id"
        ]

        #查询是否有user_id,如果没有则认为未登录
        content = {"id": 0}
        result = {}
        for t in insert_field:
            field_value = data.get(t, None)
            if field_value:
                result[t] = field_value.strip()

        if result['fin_percentage'].isdigit():
            if not (int(result['fin_percentage']) > 0
                    and int(result['fin_percentage']) <= 100):
                return my_response(code=1, msg=u"数字范围取值错误", content=content)
        else:
            return my_response(code=1, msg=u"百分比需要填写数字", content=content)
        result['dev_event_owner_id'] = user_id
        result['duration_time'] = (
            datetime.datetime.strptime(result['end_time'], "%H:%M:%S") -
            datetime.datetime.strptime(result['start_time'],
                                       "%H:%M:%S")).total_seconds()
        print(result['end_time'], result['start_time'],
              result['duration_time'])

        try:
            insert_process = DevEvent(**result)
            insert_process.save()
            content = {"id": insert_process.id}
            response = my_response(code=0, msg=u"success", content=content)
        except:
            response = my_response(code=1, msg=u"插入数据失败", content=content)
        return response
Пример #18
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
Пример #19
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
Пример #20
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
Пример #21
0
 def process_request(request):
     """
     :param request:
     :return:
     """
     # print "start", time.time()
     if "login" in request.path:
         return
     # request.COOKIES["sid"] = "9342c00a6cb65a2d35e2bd48cc2ab163"
     sid = request.COOKIES.get("sid")
     content = cache.get(sid)
     if content:
         chinese_name = content.get("chinese_name")
         Logger.debug("{0}: request, url is: {1}".format(
             username, request.path.encode("utf-8")))
         request.COOKIES["chinese_name"] = chinese_name
     else:
         return my_response(code=-1, msg="登录超时!")
Пример #22
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
Пример #23
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
Пример #24
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
Пример #25
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
Пример #26
0
 def get(self, request):
     # username = request.get("username")
     auth.logout(request)
     response = my_response(code=0, msg="用户登出成功", content="")
     response.set_cookie("sid", "", expires=0)
     return response