|
@@ -655,11 +655,22 @@ class SerialNumberView(View):
|
|
|
|
|
|
@staticmethod
|
|
|
def generate_mac_and_serial_numbers(request_dict, response):
|
|
|
+ """
|
|
|
+ 生成mac_serial.csv文件
|
|
|
+ :param request_dict: 请求
|
|
|
+ :param quantity: 生成数量
|
|
|
+ :param user_id: 账号ID
|
|
|
+ :param response: 响应
|
|
|
+ :return: response
|
|
|
+ """
|
|
|
# 获取生成数量
|
|
|
quantity = int(request_dict.get('quantity', 0))
|
|
|
# 获取公司类型
|
|
|
company_id = int(request_dict.get('company_id', 0))
|
|
|
- if quantity == 0 or company_id == 0:
|
|
|
+ # 获取账号ID
|
|
|
+ user_id = int(request_dict.get('user_id', 0))
|
|
|
+
|
|
|
+ if not (quantity and company_id and user_id):
|
|
|
return response.json(444)
|
|
|
|
|
|
# 获取mac地址查询集
|
|
@@ -669,33 +680,54 @@ class SerialNumberView(View):
|
|
|
mac = mac_qs[0]['value']
|
|
|
|
|
|
# 获取序列号地址查询集
|
|
|
- serial_qs = CompanySerialModel.objects.filter(status=1,company_id=company_id)[:quantity]
|
|
|
+ user_serial_numbers = UserSerialNumberModel.objects.filter(
|
|
|
+ user__id=user_id,
|
|
|
+ serial_number__status=1,
|
|
|
+ serial_number__use_status=1
|
|
|
+ ).select_related('serial_number')[:quantity]
|
|
|
+
|
|
|
# 判断序列号地址是否充足
|
|
|
- if len(serial_qs) < quantity:
|
|
|
- return response.json(444,'序列号不足')
|
|
|
+ if len(user_serial_numbers) < quantity:
|
|
|
+ return response.json(444, '序列号不足')
|
|
|
|
|
|
now_time = int(time.time())
|
|
|
+ #需要更新的序列号表
|
|
|
+ company_serial_numbers_list = []
|
|
|
+ #保存到CSV的数据
|
|
|
+ csv_data = []
|
|
|
+ # 收集需要更新的序列号对象
|
|
|
+ serials_to_update = []
|
|
|
+
|
|
|
+ for user_serial in user_serial_numbers:
|
|
|
+ serial = user_serial.serial_number
|
|
|
+ company_serial_numbers_list.append(serial.serial_number)
|
|
|
+ next_mac = CommonService.updateMac(mac)
|
|
|
+
|
|
|
+ if company_id == 1:
|
|
|
+ csv_serial_number = serial.serial_number + '11A'
|
|
|
+ elif company_id == 2:
|
|
|
+ csv_serial_number = serial.serial_number + '11L'
|
|
|
+ # company_id其余情况不加后缀
|
|
|
+ else:
|
|
|
+ csv_serial_number = serial.serial_number
|
|
|
|
|
|
- # 保存到mac_serial.csv
|
|
|
+ csv_data.append([next_mac, csv_serial_number])
|
|
|
+ mac = next_mac
|
|
|
+ serial.use_status = 2
|
|
|
+ serials_to_update.append(serial)
|
|
|
+
|
|
|
+ # 批量写入CSV文件
|
|
|
with open('mac_serial.csv', 'w', newline='') as csvfile:
|
|
|
writer = csv.writer(csvfile)
|
|
|
writer.writerow(['MAC', 'SN'])
|
|
|
+ writer.writerows(csv_data)
|
|
|
|
|
|
- for i, serial in enumerate(serial_qs):
|
|
|
- next_mac = CommonService.updateMac(mac)
|
|
|
- if company_id == 1:
|
|
|
- csv_serial_number = serial.serial_number + '11A'
|
|
|
- elif company_id == 2:
|
|
|
- csv_serial_number = serial.serial_number + '11L'
|
|
|
- else:# 其他情况 company_id = X
|
|
|
- csv_serial_number = serial.serial_number
|
|
|
- writer.writerow([next_mac, csv_serial_number])
|
|
|
- mac = next_mac
|
|
|
-
|
|
|
- serial.status = 2
|
|
|
- serial.update_time = now_time
|
|
|
- serial.save()
|
|
|
+ # 批量更新erialNumberModel
|
|
|
+ SerialNumberModel.objects.bulk_update(serials_to_update, ['use_status'])
|
|
|
|
|
|
+ # 更新CompanySerialModel表
|
|
|
+ CompanySerialModel.objects.filter(serial_number__in=company_serial_numbers_list)\
|
|
|
+ .update(status=2, update_time=now_time)
|
|
|
next_mac = CommonService.updateMac(mac)
|
|
|
mac_qs.update(value=next_mac, update_time=now_time)
|
|
|
|
|
@@ -705,4 +737,3 @@ class SerialNumberView(View):
|
|
|
|
|
|
|
|
|
|
|
|
-
|