Ejemplo n.º 1
0
class WorkOrderTable(tables.DataTable):
    # hidestatus = tables.Column("hidestatus", verbose_name=u"隐藏状态")
    orderid = tables.Column("id", verbose_name=u"工单ID")
    confirmuser = tables.Column(
        lambda obj: WorkOrderManager.get_handlinguser(obj),
        verbose_name=u'处理人')
    userid = tables.Column(lambda obj: UserManager.get(id=obj.userid).username
                           if obj.userid else '',
                           verbose_name=u'提交人')
    # cc = tables.Column(lambda obj:' | '.join([ UserManager.get(id=i).username for i in json.loads(obj.ordertemp.cc)]) if json.loads(obj.ordertemp.cc) else '',verbose_name=u'抄送')
    # sendTo = tables.Column(lambda obj: ' | '.join([ UserManager.get(id=i).username for i in json.loads(obj.ordertemp.default_send)]) if json.loads(obj.ordertemp.default_send) else '',verbose_name=u'发送')
    name = tables.Column(lambda obj: obj.ordertemp.name, verbose_name=u'工单模板')
    typename = tables.Column(lambda obj: obj.ordertemp.typeid.name,
                             verbose_name=u'工单类型')
    # ordernum = tables.Column("ordernum", verbose_name=u"工单编号")
    status = tables.Column(lambda obj: WorkOrderManager.get_status(obj.status),
                           verbose_name=u'工单状态')
    # priority = tables.Column(lambda obj:WorkOrderManager.get_priority(obj.priority),verbose_name=u'优先级')
    addedtime = tables.Column('addedtime', verbose_name=u'提交时间')
    confirmtime = tables.Column('confirmtime', verbose_name=u'确认时间')
    dealtime = tables.Column(
        lambda obj: omg_func.formate_second_date(int(obj.dealtime))
        if obj.dealtime else '',
        verbose_name=u'处理时间')

    # dealtime = tables.Column(lambda obj:omg_func.formate_second_date(int(obj.dealtime)) if obj.dealtime else '',verbose_name=u'处理时间')

    class Meta(object):
        name = "workorder"
        verbose_name = u'工单'
        pagination_param = "page"
        prev_pagination_param = "page"
        multi_select = False
        table_actions = (
            OrderFilterAction,
            WorkOrderEfficiency,
            WorkOrderField,
            WorkOrderTemp,
            ListTemp,
        )
        row_actions = (
            ListOrder,
            EditOrder,
            DeleteOrder,
        )
Ejemplo n.º 2
0
 def post(self, request, *args, **kwargs):
     data = json.loads(request.body)
     orderId = data.get('orderId',None)
     data = {}
     objects = WorkOrderManager.delete(orderId)
     if objects:
         data = {'result':1,'msg':u'工单删除成功'}
     else:
         data = {'result':2,'msg':u'工单删除失败'}
     return HttpResponse(json.dumps(data),
                         content_type='application/json')
Ejemplo n.º 3
0
 def get_data(self):
     search_opts = {}
     filter = self.get_server_filter_info(self.request)
     if filter['value'] and filter['field']:
         search_opts = {filter['field']: filter['value']}
     marker = self.request.GET.get(WorkOrderTable._meta.pagination_param,
                                   None)
     args = {
         'marker': marker,
         'paginate': True,
         'filters': '',
         'sort_dir': 'desc'
     }
     objs = WorkOrderManager.filter(self.request, search_opts=search_opts)
     objects, self._prev, self._more = utils.paginate(
         self.request, objs, **args)
     self._totalcount = len(objs)
     return objects
Ejemplo n.º 4
0
 def delete(self, request, obj_id):
     WorkOrderManager.delete(obj_id)
Ejemplo n.º 5
0
 def allowed(self, request, datum):
     if WorkOrderManager.get(request, id=datum.id).ordertemp.is_audit:
         return True
     else:
         return False
Ejemplo n.º 6
0
 def allowed(self, request, datum):
     if WorkOrderManager.list(request, ordertemp=datum.id):
         return False
     else:
         return True
Ejemplo n.º 7
0
    def get_context_data(self, **kwargs):
        orderid = kwargs['id']
        context = super(ListOrderView, self).get_context_data(**kwargs)
        order_obj = WorkOrderManager.get(self.request, id=orderid)
        userid = self.request.user.id
        user_obj = UserManager.get(id=self.request.user.id)
        if order_obj and user_obj:
            message_obj = WorkOrderMessageManager.get(
                self.request,
                orderid=WorkOrderManager.get(self.request, id=orderid))
            mesg_obj = []
            if message_obj:
                for item in message_obj:
                    if item.attachment:
                        mesg_obj.append({
                            'avatar':
                            UserManager.get(id=item.userid).avatar,
                            'username':
                            UserManager.get(id=item.userid).username,
                            'message':
                            item.message,
                            'attachment':
                            json.loads(item.attachment),
                            'addedtime':
                            item.addedtime
                        })
                    else:
                        mesg_obj.append({
                            'avatar':
                            UserManager.get(id=item.userid).avatar,
                            'username':
                            UserManager.get(id=item.userid).username,
                            'message':
                            item.message,
                            'addedtime':
                            item.addedtime
                        })
            context['mesg_obj'] = mesg_obj

            self.page_title = u"工单详情"
            context['field_obj'] = json.loads(order_obj.orderfield)
            if order_obj.attachment:
                context['order_attachment'] = json.loads(order_obj.attachment)
            context['order_obj'] = order_obj
            context['status'] = WorkOrderManager.get_status(order_obj.status)

            send_cc = []
            send_user = []
            if order_obj.ordertemp.ccusers:
                for user in order_obj.ordertemp.ccusers.all():
                    send_cc.append(int(user.id))
                    send_user.append(user.userId)
            if order_obj.ccusers:
                for user in order_obj.ccusers.all():
                    send_cc.append(int(user.id))
                    send_user.append(user.userId)

            if order_obj.auditusers:
                for user in order_obj.auditusers.all():
                    send_cc.append(int(user.id))
                    send_user.append(user.userId)

            context['send_handle_user'] = json.dumps(send_user)
            if UserManager.get(id=order_obj.userid).userId:
                context['send_order_user'] = json.dumps(
                    [str(UserManager.get(id=order_obj.userid).userId)])
            else:
                context['send_order_user'] = json.dumps([])
            context['userid'] = user_obj.id
            context['username'] = UserManager.get(
                id=int(order_obj.userid)).username
            context['orderUserId'] = order_obj.userid

            if order_obj.ordertemp.is_audit is True:
                self.template_name = "sysadmin/workorder/list_audit_order.html"

                if int(order_obj.status) == 0:
                    context['openstatus'] = 'active'
                if int(order_obj.status) == 1:
                    context['confirmstatus'] = 'active'
                if int(order_obj.status) == 2:
                    context['closestatus'] = 'active'
                if int(order_obj.status) == 4:
                    context['auditstatus'] = 'active'
                if int(order_obj.status) == 5:
                    context['repulsestatus'] = 'active'
                if int(order_obj.status) == 0 and user_obj.id in [
                        int(user.id) for user in order_obj.auditusers.all()
                ]:
                    context['auditpassed'] = True
                    context['repulse'] = True
                if user_obj.id in [
                        int(user.id)
                        for user in order_obj.ordertemp.ccusers.all()
                ] and int(order_obj.status) == 4:
                    context['confirm'] = True
                    context['repulse'] = True
                if user_obj.id == order_obj.userid and int(
                        order_obj.status) == 1:
                    context['close'] = True

                if int(order_obj.status) == 2 or int(order_obj.status) == 0:
                    context['disabled'] = 'none'
                elif user_obj.id == order_obj.userid:
                    context['disabled'] = ''
                if int(order_obj.status
                       ) == 0 and order_obj.userid == user_obj.id:
                    context['disabled'] = ''
                if int(order_obj.status
                       ) == 5 and order_obj.userid == user_obj.id:
                    context['disabled'] = 'none'
            elif order_obj.ordertemp.is_confirm is True:
                self.template_name = "sysadmin/workorder/list_audit_order.html"
                if int(order_obj.status) == 0:
                    context['openstatus'] = 'active'
                if int(order_obj.status) == 1:
                    context['confirmstatus'] = 'active'
                if int(order_obj.status) == 2:
                    context['closestatus'] = 'active'
                if int(order_obj.status) == 4:
                    context['auditstatus'] = 'active'
                if int(order_obj.status) == 5:
                    context['repulsestatus'] = 'active'

                if int(order_obj.status) == 0 and user_obj.id in [
                        int(user.id)
                        for user in order_obj.ordertemp.tousers.all()
                ]:
                    context['auditpassed'] = True
                    context['repulse'] = True
                if user_obj.id in [
                        int(user.id)
                        for user in order_obj.ordertemp.ccusers.all()
                ] and int(order_obj.status) == 4:
                    context['confirm'] = True
                    context['repulse'] = True
                if user_obj.id == order_obj.userid and int(
                        order_obj.status) == 1:
                    context['close'] = True

                if int(order_obj.status) == 2 or int(order_obj.status) == 0:
                    context['disabled'] = 'none'
                elif user_obj.id == order_obj.userid:
                    context['disabled'] = ''
                if int(order_obj.status
                       ) == 0 and order_obj.userid == user_obj.id:
                    context['disabled'] = ''
                if int(order_obj.status
                       ) == 5 and order_obj.userid == user_obj.id:
                    context['disabled'] = 'none'

            else:
                if order_obj.status:
                    if int(order_obj.status) == 0:
                        context['openstatus'] = 'active'
                    if int(order_obj.status) == 1:
                        context['confirmstatus'] = 'active'
                    if int(order_obj.status) == 2:
                        context['closestatus'] = 'active'

                if user_obj.id in [
                        int(user.id)
                        for user in order_obj.ordertemp.ccusers.all()
                ] and int(order_obj.status
                          ) == 0 and order_obj.ordertemp.is_audit is False:
                    context['confirm'] = True
                if user_obj.id == order_obj.userid and int(
                        order_obj.status) == 1:
                    context['close'] = True
                if user_obj.id == order_obj.userid and int(
                        order_obj.status) == 2:
                    context['reopen'] = True

                if int(order_obj.status) == 2 or int(order_obj.status) == 0:
                    context['disabled'] = 'none'
                elif user_obj.id == order_obj.userid:
                    context['disabled'] = ''

                if int(order_obj.status
                       ) == 0 and order_obj.userid == user_obj.id:
                    context['disabled'] = ''
        else:
            self.template_name = 'sysadmin/workorder/list_temp.html'
            self.page_title = u"提交工单"
            temp_type_obj = []
            for i in WorkOrderTypeManager.list(self.request):
                temp_obj = []
                temp = WorkOrderTempManager.filter(self.request, typeid=i.id)
                if temp:
                    for s in temp:
                        temp_obj.append({'name': s.name, 'id': s.id})
                    temp_type_obj.append({
                        'isExist': True,
                        'name': i.name,
                        'id': i.id,
                        'temp_obj': temp_obj
                    })
                else:
                    temp_type_obj.append({
                        'name': i.name,
                        'id': i.id,
                        'isExist': False
                    })
            context['temp_type_obj'] = temp_type_obj
        return context
Ejemplo n.º 8
0
 def get_object(self):
     id = self.kwargs.get('id', None)
     return WorkOrderManager.get('', id=id)
Ejemplo n.º 9
0
    def get(self,request,*arg,**kwargs):
        begintime = request.GET.get('begintime', None)
        endtime = request.GET.get('endtime', None)
        if begintime is None:
            begintime = (datetime.now() + timedelta(days=-7)).strftime('%Y-%m-%d %H:%M:%S')
        if endtime is None:
            endtime = (datetime.now() + timedelta(days=0)).strftime('%Y-%m-%d %H:%M:%S')
        users = []
        weekUsers = []
        orderDealTime = []
        effObject = []
        weekDealTime = []
        orders = WorkOrderManager.count(delete=False)
        openOrders = WorkOrderManager.count(status=0) 
        ordObjects = WorkOrderManager.list(request).exclude(status=0)\
            .filter(addedtime__gte=begintime,addedtime__lte=endtime)
        effObjects = WorkOrderEffManager.list()

        weekOrderObjects = WorkOrderManager.list('',addedtime__gte=begintime,addedtime__lte=endtime)\
            .exclude(status=0).exclude(status=3).values('confirmuser').annotate(count=Count('confirmuser'))
        for obj in weekOrderObjects:
            if obj['confirmuser']:
                try:
                    weekUsers.append({
                            'username':UserManager.get(id=obj['confirmuser']).username,
                            'count':obj['count'],
                            }
                        )
                except Exception:
                    pass
        weekOrderObjects = WorkOrderManager.list('',addedtime__gte=begintime,addedtime__lte=endtime)\
            .exclude(status=0).exclude(status=3).values('confirmuser').annotate(sum=Sum('dealtime'))
        for obj in weekOrderObjects:
            if obj['confirmuser']:
                try:
                    weekDealTime.append({
                            'username':UserManager.get(id=obj['confirmuser']).username,
                            'sum':obj['sum'],
                        })
                except Exception:
                    pass
        if effObjects:
            for obj in effObjects:
                effObject.append({'time':obj.addedtime.strftime('%Y-%m-%d %H:%M:%S'),'value':obj.value})
        if ordObjects:
            for obj in ordObjects:
                orderDealTime.append({'time':obj.dealtime,'id':obj.id})
        userObj = WorkOrderManager.group('confirmuser')
        for obj in userObj:
            if obj['confirmuser']:
                try:
                    users.append({
                            'username':UserManager.get(id=obj['confirmuser']).username,
                            'count':obj['count'],
                            })
                except Exception:
                    pass
        objects = {
            'effObject':effObject,
            'users':users,
            'weekUsers':weekUsers,
            'orders':orders,
            'openorders':openOrders,
            'orderDealTime':orderDealTime,
            'weekDealTime':weekDealTime,
            }
        return HttpResponse(json.dumps(objects),
                content_type='application/json') 
Ejemplo n.º 10
0
 def get(self,request,*arg,**kwargs):
     data = json.loads(request.body)
     tempTypeId = data.get('id',None)
     objects = WorkOrderManager.list(ordertemp=tempTypeId)
     return HttpResponse(json.dumps(objects),
             content_type='application/json')            
Ejemplo n.º 11
0
    def post(self, request, *args, **kwargs):
        data = request.POST

        order_name = data.get('order_name',None)
        order_desc = data.get('order_desc',None)
        field_obj = json.loads(data.get('field_obj',None))
        temp_id = data.get('temp_id',None)
        send_cc = json.loads(data.get('order_cc',None))
        userid = data.get('userid',None)
        files = request.FILES.getlist('files')
        tempobj = WorkOrderTempManager.get('',id=temp_id)
        time_now = strftime("%Y-%m-%d %H:%M")
        attachment = []
        send_user_id = []
        data = {}
        try:
            groups = UserManager.get(id=int(userid))
        except Exception:
            pass
        order_group = [int(o.id) for o in tempobj.auditgroup.all()]
        user_group = [int(o.id) for o in groups.groupname.all()]
        result = list(set(user_group).intersection(set(order_group)))
        user_obj = UserManager.filter(groupname__in=result,is_headman=True)
        if len(user_obj) == 0:
            data = {'result':False,'msg':u'请联系管理员把你加入某个组里面'}
        if files:
            UPLOAD_PATH = getattr(settings, 'UPLOAD_PATH')
            key_path = fucApi.joinpath(UPLOAD_PATH,str('workorder'),str(userid))
            key_path = fucApi.mkdir(key_path)
            for file in files:
                attachment.append({'name':file.name,'path':key_path})
                destfile = open(key_path + '/' + file.name,'w')
                for chunk in file.chunks():
                    destfile.write(chunk)

        kwargs = {
            'userid':userid,
            'hidestatus':1,
            'name':order_name,
            'description':order_desc,
            'ordertemp':tempobj,
            'orderfield':json.dumps(field_obj),
            'attachment':json.dumps(attachment),
        }
        try:
            objects = WorkOrderManager.add(request,**kwargs)
            data = {'result':True,'msg':u'创建工单成功','id':objects.id}
            if tempobj and tempobj.is_audit:
                message = '待审核工单:[ {0} ]'.format(tempobj.name)
            else:
                message = '待处理工单 [ {0} ] '.format(tempobj.name)
            obj_msg = WorkOrderMessageManager.insert(orderid=objects,message=message,userid=userid)
            obj_msg.save()
            for user in send_cc:
                try:
                    userobj = UserManager.get(id=user)
                    send_user_id.append(userobj.userId)
                    objects.ccusers.add(userobj)
                except Exception:
                    pass
            for user in tempobj.ccusers.all():
                try:
                    send_user_id.append(user.userId)
                except Exception:
                    pass
            for user in user_obj:
                try:
                    send_user_id.append(user.userId)
                    objects.auditusers.add(user)
                except Exception:
                    pass
            if send_user_id:
                body = {}
                body['user'] = set(send_user_id)
                request_url = "http://{0}/sysadmin/workorder/{1}/list".format(request.get_host(),objects.id)
                body['msg'] = '工单编号:{0}\n主题:{1}\n描述:{2}\n来自:{3}\n时间:{4}\n访问地址:{5}\n'.format(
                    objects.id,tempobj.name,tempobj.description,
                    UserManager.get(id=userid).username,
                    time_now,request_url)
                api = DingApi()
                try:
                    api.senddingText(body['user'],body['msg'])
                except Exception:
                    pass
        except Exception:
            pass
        return HttpResponse(json.dumps(data),
                            content_type='application/json')