def stockbill_list_data(request, bill_type_id=None): request_param = GridRequestParam(request) bill_query = get_stockbill_query_objects().all() """ bill_query = bill_query.annotate( total_amount = Sum('stockbillentry__amount'),total_qty = Sum('stockbillentry__qty')) bill_query = bill_query.values('supplier__k3_name', 'department__k3_name', 'customer__k3_name', 'customer__desc', 'total_amount', 'total_qty', *field_names(StockBill)) """ bill_query = bill_query.values('supplier__k3_name', 'department__k3_name', 'customer__k3_name', 'customer__desc', *field_names(StockBill)) bill_query = bill_query.filter(request_param.get_filter()) if bill_type_id is not None: bill_type = BillType.objects.get(id=bill_type_id) bill_query = bill_query.filter(bur_type=bill_type.type_text) bill_query = bill_query.filter(Q(is_b__gte=0) | Q(is_b__isnull=True)) begin_date = request.POST.get('begin_date') end_date = request.POST.get('end_date') if begin_date: bill_query = bill_query.filter(bill_date__gte=begin_date) if end_date: bill_query = bill_query.filter(bill_date__lte=end_date) bill_query = bill_query.order_by(*request_param.get_order()) total_count = bill_query.count() start, finish = request_param.get_data_start_finish() stockbill_list = list(bill_query[start: finish]) return GridResponse(data=stockbill_list, total=total_count)
def purseentry_list_data(request, purse_id=None): request_param = GridRequestParam(request) entry_query = PurseEntry.objects.all() entry_query = entry_query.values( 'purse__inter_id', 'purse__bur_type', 'purse__k3_type', 'purse__bill_no', 'purse__bill_date', 'purse__supplier__k3_name', 'material__bur_id', 'material__bur_num', 'material__k3_name', *field_names(PurseEntry)) entry_query = entry_query.filter(request_param.get_filter()) if purse_id is not None: entry_query = entry_query.filter(purse__inter_id=purse_id) entry_query = entry_query.filter(Q(is_b__gte=0) | Q(is_b__isnull=True)) begin_date = request.POST.get('begin_date') end_date = request.POST.get('end_date') if begin_date: entry_query = entry_query.filter(purse__bill_date__gte=begin_date) if end_date: entry_query = entry_query.filter(purse__bill_date__lte=end_date) entry_query = entry_query.order_by(*request_param.get_order()) total_count = entry_query.count() start, finish = request_param.get_data_start_finish() purseentry_list = list(entry_query[start: finish]) for bill_entry in purseentry_list: round_bill_entry_decimal(bill_entry) return GridResponse(data=purseentry_list, total=total_count)
def warehouse_detail_data(request): warehouse_id_data = request.POST.get('id') if warehouse_id_data is None: warehouse = Warehouse() else: warehouse_id = int(warehouse_id_data) warehouse = Warehouse.objects.filter(pk=warehouse_id).values(*field_names(Warehouse))[0] return JsonResponse(warehouse)
def app_detail_data(request): app_id_data = request.POST.get("id") if app_id_data is None: app = App() else: app_id = int(app_id_data) app = App.objects.filter(pk=app_id).values(*field_names(App))[0] return JsonResponse(app)
def admin_detail_data(request): admin_id_data = request.POST.get('id') if admin_id_data is None: admin = Admin() else: admin_id = int(admin_id_data) admin = Admin.objects.filter(pk=admin_id).values('user__nick_name', *field_names(Admin))[0] return JsonResponse(admin)
def group_detail_data(request): group_id = request.POST.get("id") if group_id is None: group = Group() else: group_id = int(group_id) group = Group.objects.filter(pk=group_id).values("app_id", "app__app_name", *field_names(Group))[0] return JsonResponse(group)
def user_detail_data(request): user_id_data = request.POST.get('id') if user_id_data is None: user = User() else: user_id = int(user_id_data) user = User.objects.filter(pk=user_id).values(*field_names(User))[0] user['new_password'] = '' return JsonResponse(user)
def materiel_list_data(request): request_param = GridRequestParam(request) materiel_query = Materiel.objects.all() materiel_query = materiel_query.values(*field_names(Materiel)) materiel_query = materiel_query.filter(request_param.get_filter()) materiel_query = materiel_query.order_by(*request_param.get_order()) total_count = materiel_query.count() start, finish = request_param.get_data_start_finish() materiel_list = list(materiel_query[start: finish]) return GridResponse(data=materiel_list, total=total_count)
def stock_list_data(request): request_param = GridRequestParam(request) stock_query = Stock.objects.all() stock_query = stock_query.values(*field_names(Stock)) stock_query = stock_query.filter(request_param.get_filter()) stock_query = stock_query.order_by(*request_param.get_order()) total_count = stock_query.count() start, finish = request_param.get_data_start_finish() stock_list = list(stock_query[start: finish]) return GridResponse(data=stock_list, total=total_count)
def department_list_data(request): request_param = GridRequestParam(request) department_query = Department.objects.all() department_query = department_query.values(*field_names(Department)) department_query = department_query.filter(request_param.get_filter()) department_query = department_query.order_by(*request_param.get_order()) total_count = department_query.count() start, finish = request_param.get_data_start_finish() department_list = list(department_query[start: finish]) return GridResponse(data=department_list, total=total_count)
def customer_list_data(request): request_param = GridRequestParam(request) customer_query = Customer.objects.all() customer_query = customer_query.values(*field_names(Customer)) customer_query = customer_query.filter(request_param.get_filter()) customer_query = customer_query.order_by(*request_param.get_order()) total_count = customer_query.count() start, finish = request_param.get_data_start_finish() customer_list = list(customer_query[start: finish]) return GridResponse(data=customer_list, total=total_count)
def unit_list_data(request): request_param = GridRequestParam(request) unit_query = Unit.objects.all() unit_query = unit_query.values(*field_names(Unit)) unit_query = unit_query.filter(request_param.get_filter()) unit_query = unit_query.order_by(*request_param.get_order()) total_count = unit_query.count() start, finish = request_param.get_data_start_finish() unit_list = list(unit_query[start: finish]) return GridResponse(data=unit_list, total=total_count)
def purse_select_supplier_list_data(request): request_param = GridRequestParam(request) supplier_query = Supplier.objects.all() supplier_query = supplier_query.values(*field_names(Supplier)) supplier_query = supplier_query.filter(request_param.get_filter()) supplier_query = supplier_query.order_by(*request_param.get_order()) total_count = supplier_query.count() start, finish = request_param.get_data_start_finish() supplier_list = list(supplier_query[start: finish]) return GridResponse(data=supplier_list, total=total_count)
def billtype_list_data(request): request_param = GridRequestParam(request) billtype_query = BillType.objects.all() billtype_query = billtype_query.values(*field_names(BillType)) billtype_query = billtype_query.filter(request_param.get_filter()) billtype_query = billtype_query.order_by(*request_param.get_order()) total_count = billtype_query.count() start, finish = request_param.get_data_start_finish() billtype_list = list(billtype_query[start: finish]) return GridResponse(data=billtype_list, total=total_count)
def deptuser_select_user_list_data(request): try: dept_id = request.POST.get('dept_id') # user_id_list = DepartmentUser.objects.filter(department=dept_id).values_list('user_id', flat=True) # 下面一句的写法更为简洁,最终会和再下面的语句会生成一个单独的SQL, 前一个查询很变成后一个查询的子查询 user_id_list = DepartmentUser.objects.filter(department=dept_id).values('user_id') user_query = User.objects.exclude(id__in=user_id_list).values(*field_names(User)) total_count = user_query.count() user_list = list(user_query) return JsonResponse({'total': total_count, 'rows': user_list}) except Exception as exp: logger.exception(exp) return JsonResponse({'success': False, 'message': '加载数据失败!详细:%s' % exp})
def app_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() app_query = App.objects.all() app_query = app_query.values(*field_names(App)) if sort_property is not None: app_query = app_query.order_by(sort_direction + sort_property) total_count = app_query.count() app_list = list(app_query[start : start + limit]) return JsonResponse({"total": total_count, "rows": app_list}) except Exception as exp: logger.exception(exp) return JsonResponse({"success": False, "message": "加载数据失败!详细:%s" % exp})
def user_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() user_query = User.objects.all() user_query = user_query.values(*field_names(User)) if sort_property is not None: user_query = user_query.order_by(sort_direction + sort_property) total_count = user_query.count() user_list = list(user_query[start: start + limit]) return JsonResponse({'total': total_count, 'rows': user_list}) except Exception as exp: logger.exception(exp) return JsonResponse({'success': False, 'message': '加载数据失败!详细:%s' % exp})
def admin_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() admin_query = Admin.objects.all() # extra filters here admin_query = admin_query.values('user__login_name', 'user__nick_name', *field_names(Admin)) if sort_property is not None: admin_query = admin_query.order_by(sort_direction + sort_property) total_count = admin_query.count() admin_list = list(admin_query[start: start + limit]) return JsonResponse({'total': total_count, 'rows': admin_list}) except Exception as exp: logger.exception(exp) return JsonResponse({'success': False, 'message': '加载数据失败!详细:%s' % exp})
def group_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() group_query = Group.objects.all() group_query = group_query.annotate(user_count=Count("users")).values( "app__app_name", "user_count", *field_names(Group) ) if sort_property is not None: group_query = group_query.order_by(sort_direction + sort_property) total_count = group_query.count() group_list = list(group_query[start : start + limit]) return JsonResponse({"total": total_count, "rows": group_list}) except Exception as exp: logger.exception(exp) return JsonResponse({"success": False, "message": "加载数据失败!详细:%s" % exp})
def retailbillentry_list_data(request, stock_bill_id=None): request_param = GridRequestParam(request) entry_query = get_retailbillentry_query_objects() entry_query = entry_query.values( 'stock_bill__bur_type', 'stock_bill__k3_type', 'stock_bill__bill_no', 'stock_bill__bill_date', 'stock_bill__supplier__k3_name','stock_bill__customer__bur_num', 'stock_bill__customer__k3_name', 'stock_bill__biller_name', 'stock_bill__checker_name', 'stock_bill__db_name', 'material__bur_num', 'material__k3_name', 'sc_stock__bur_num', 'sc_stock__k3_name', 'dc_stock__k3_name', *field_names(RetailBillEntry)) entry_query = entry_query.filter(request_param.get_filter()) if stock_bill_id is not None: entry_query = entry_query.filter(stock_bill__fid=stock_bill_id) entry_query = entry_query.filter(Q(is_b__gte=0) | Q(is_b__isnull=True)) entry_query = filter_retailbill_entry_query(request, entry_query) summary_data = entry_query.aggregate(consign_amount=Sum('consign_amount'), amount=Sum('amount'), all_amount=Sum('all_amount'), qty=Sum('qty'), stock_qty=Sum('stock_qty'), real_qty=Sum('real_qty')) entry_query = entry_query.order_by(*request_param.get_order()) total_count = entry_query.count() start, finish = request_param.get_data_start_finish() retailbillentry_list = list(entry_query[start: finish]) for bill_entry in retailbillentry_list: round_retail_bill_entry_decimal(bill_entry) # return GridResponse(data=retailbillentry_list, total=total_count) return JsonResponse({ 'grid_data': { 'aaData': retailbillentry_list, 'iTotalDisplayRecords': total_count, 'iTotalRecords': total_count, }, 'summary_data': { 'consign_amount': round(summary_data['consign_amount'], 2) if summary_data['consign_amount'] else 0, 'amount': round(summary_data['amount'], 2) if summary_data['amount'] else 0, 'all_amount': round(summary_data['all_amount'], 2) if summary_data['all_amount'] else 0, 'qty': round(summary_data['qty'], 0) if summary_data['qty'] else 0, 'stock_qty': round(summary_data['stock_qty'], 0) if summary_data['stock_qty'] else 0, 'real_qty': round(summary_data['real_qty'], 0) if summary_data['real_qty'] else 0, }, })
def dept_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() dept_query = Department.objects.all() parent_id = request.POST.get('parentId') if parent_id is None or parent_id == '' or parent_id == '0': parent_id = None else: parent_id = int(parent_id) dept_query = dept_query.filter(parent=parent_id) dept_query = dept_query.values(*field_names(Department)) if sort_property is not None: dept_query = dept_query.order_by(sort_direction + sort_property) total_count = dept_query.count() dept_list = list(dept_query[start: start + limit]) return JsonResponse({'total': total_count, 'rows': dept_list}) except Exception as exp: logger.exception(exp) return JsonResponse({'success': False, 'message': '加载数据失败!详细:%s' % exp})
def resource_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() resource_query = Resource.objects.all() app_id = request.POST.get('app_id') if app_id is not None and app_id.strip() != '' and app_id != '0': resource_query = resource_query.filter(app=app_id) if sort_property is not None: resource_query = resource_query.order_by(sort_direction + sort_property) resource_query = resource_query \ .annotate(user_count=Count('users', distinct=True)) \ .annotate(group_count=Count('groups', distinct=True)) \ .values('app__app_name', 'user_count', 'group_count', *field_names(Resource)) total_count = resource_query.count() resource_list = list(resource_query[start: start + limit]) return JsonResponse({'total': total_count, 'rows': resource_list}) except Exception as exp: logger.exception(exp) return JsonResponse({'success': False, 'message': '加载数据失败!详细:%s' % exp})
def purse_list_data(request, bill_type_id=None): request_param = GridRequestParam(request) bill_query = Purse.objects.all() bill_query = bill_query.values('supplier__k3_name', 'department__k3_name', *field_names(Purse)) bill_query = bill_query.filter(request_param.get_filter()) if bill_type_id is not None: bill_type = BillType.objects.get(id=bill_type_id) bill_query = bill_query.filter(bur_type__contains=bill_type.type_text) # contains, 单据类型,在类型表里面和采购单存储的类型名称不完全对上 bill_query = bill_query.filter(Q(is_b__gte=0) | Q(is_b__isnull=True)) begin_date = request.POST.get('begin_date') end_date = request.POST.get('end_date') if begin_date: bill_query = bill_query.filter(bill_date__gte=begin_date) if end_date: bill_query = bill_query.filter(bill_date__lte=end_date) bill_query = bill_query.order_by(*request_param.get_order()) total_count = bill_query.count() start, finish = request_param.get_data_start_finish() purse_list = list(bill_query[start: finish]) return GridResponse(data=purse_list, total=total_count)
def resource_auth_group_select_list_data(request): try: if request.POST.get('res_id_list') is None: return JsonResponse({'total': 0, 'rows': []}) res_id_list_form = ResourceIdListForm(request.POST) res_id_list = res_id_list_form.data.getlist('res_id_list') search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() group_query = Group.objects.all() res_id_count = len(res_id_list) auth_group_id_query = GroupResource.objects.all() \ .values('group_id').annotate(res_count=Count('resource')) \ .filter(resource__in=res_id_list, res_count=res_id_count) \ .values('group_id') group_query = group_query.exclude(id__in=auth_group_id_query) group_query = group_query.values('app__app_name', *field_names(Group)) if sort_property is not None: group_query = group_query.order_by(sort_direction + sort_property) total_count = group_query.count() group_list = list(group_query[start: start + limit]) return JsonResponse({'total': total_count, 'rows': group_list}) except Exception as exp: logger.exception(exp) return JsonResponse({'success': False, 'message': '加载数据失败!详细:%s' % exp})
def deptuser_user_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data( ) deptuser_query = DepartmentUser.objects.all() dept_id = request.POST.get('dept_id') if dept_id is not None and dept_id.strip() != '' and dept_id != '0': deptuser_query = deptuser_query.filter(department=dept_id) deptuser_query = deptuser_query.values( 'department__dept_name', 'user__login_name', 'user__nick_name', *field_names(DepartmentUser)) if sort_property is not None: deptuser_query = deptuser_query.order_by(sort_direction + sort_property) total_count = deptuser_query.count() user_list = list(deptuser_query[start:start + limit]) return JsonResponse({'total': total_count, 'rows': user_list}) except Exception as exp: logger.exception(exp) return JsonResponse({ 'success': False, 'message': '加载数据失败!详细:%s' % exp })
def groupuser_user_list_data(request): try: search_form = GridSearchForm(request.POST) start, limit, sort_property, sort_direction = search_form.get_search_data() groupuser_query = GroupUser.objects.all() node_id = request.POST.get('node_id') if node_id is None or node_id == '0' or node_id.startswith('app_'): return JsonResponse(({'total': 0, 'rows': []})) else: # node_id.startswith('group_'): group_id = int(node_id.split('_')[1]) groupuser_query = groupuser_query.filter(group=group_id) groupuser_query = groupuser_query.values('group__group_name', 'user__login_name', 'user__nick_name', *field_names(GroupUser)) if sort_property is not None: groupuser_query = groupuser_query.order_by(sort_direction + sort_property) total_count = groupuser_query.count() user_list = list(groupuser_query[start: start + limit]) return JsonResponse({'total': total_count, 'rows': user_list}) except Exception as exp: logger.exception(exp) return JsonResponse({'success': False, 'message': '加载数据失败!详细:%s' % exp})
def profile_user_detail_data(request): user_id = login_service.get_login_user(request).user_id user = User.objects.filter(pk=user_id).values(*field_names(User))[0] user['new_password'] = '' return JsonResponse(user)
def resource_detail_data(request): resource_id = request.POST.get('id') if resource_id is None: resource = Resource() else: resource_id = int(resource_id) resource = Resource.objects.filter(pk=resource_id).values('app', 'app__app_name', *field_names(Resource))[0] return JsonResponse(resource)
def dept_detail_data(request): dept_id_data = request.POST.get('id') if dept_list_data is None: dept = Department() else: dept_id = int(dept_id_data) dept = Department.objects.filter(pk=dept_id).values('parent__id', 'parent__dept_name', *field_names(Department))[0] return JsonResponse(dept)