|
|
@@ -13,6 +13,7 @@ EXPORT_COLUMNS = [
|
|
|
('category', '设备分类', 12),
|
|
|
('brand', '品牌', 12),
|
|
|
('model', '型号', 20),
|
|
|
+ ('asset_value', '资产面值', 12),
|
|
|
('serial_number', '序列号', 25),
|
|
|
('location', '设备位置', 20),
|
|
|
('cabinet', '机柜', 10),
|
|
|
@@ -23,6 +24,8 @@ EXPORT_COLUMNS = [
|
|
|
('warranty_expire', '质保到期', 12),
|
|
|
('supplier', '供应商', 15),
|
|
|
('responsible_person', '负责人', 10),
|
|
|
+ ('department', '使用部门', 15),
|
|
|
+ ('user', '使用人', 10),
|
|
|
('status', '状态', 8),
|
|
|
('remark', '备注', 30),
|
|
|
]
|
|
|
@@ -100,8 +103,8 @@ def generate_import_template():
|
|
|
# 示例数据行
|
|
|
example_data = [
|
|
|
'IT-2024-0001', '测试服务器', '服务器', 'Dell', 'PowerEdge R740',
|
|
|
- 'ABC123456', '3楼机房A区', 'A01', 'U10-U15', '192.168.1.200',
|
|
|
- '192.168.1.100', '2024-01-15', '2027-01-15', '戴尔科技', '张三', '在用', '测试备注'
|
|
|
+ '50000.00', 'ABC123456', '3楼机房A区', 'A01', 'U10-U15', '192.168.1.200',
|
|
|
+ '192.168.1.100', '2024-01-15', '2027-01-15', '戴尔科技', '张三', '研发部', '李四', '在用', '测试备注'
|
|
|
]
|
|
|
for col_idx, value in enumerate(example_data, 1):
|
|
|
cell = ws.cell(row=2, column=col_idx, value=value)
|
|
|
@@ -147,12 +150,6 @@ def import_assets_from_excel(ws, category_map, operator=None):
|
|
|
results['errors'].append(f'第{row_idx}行: 缺少资产编号')
|
|
|
continue
|
|
|
|
|
|
- # 检查重复
|
|
|
- if Asset.objects.filter(asset_number=asset_number).exists():
|
|
|
- results['skipped'] += 1
|
|
|
- results['errors'].append(f'第{row_idx}行: 资产编号 {asset_number} 已存在')
|
|
|
- continue
|
|
|
-
|
|
|
# 处理分类 - 不存在则自动创建
|
|
|
category_name = data.get('category', '').strip()
|
|
|
category = category_map.get(category_name)
|
|
|
@@ -187,12 +184,22 @@ def import_assets_from_excel(ws, category_map, operator=None):
|
|
|
bmc_address = data.get('bmc_address') or None
|
|
|
ip_address = data.get('ip_address') or None
|
|
|
|
|
|
+ # 处理资产面值
|
|
|
+ from decimal import Decimal, InvalidOperation
|
|
|
+ asset_value = None
|
|
|
+ if data.get('asset_value'):
|
|
|
+ try:
|
|
|
+ asset_value = Decimal(str(data['asset_value']).replace(',', ''))
|
|
|
+ except (InvalidOperation, ValueError):
|
|
|
+ pass
|
|
|
+
|
|
|
asset = Asset.objects.create(
|
|
|
asset_number=asset_number,
|
|
|
name=data.get('name', ''),
|
|
|
category=category,
|
|
|
brand=data.get('brand', ''),
|
|
|
model=data.get('model', ''),
|
|
|
+ asset_value=asset_value,
|
|
|
serial_number=data.get('serial_number', ''),
|
|
|
location=data.get('location', ''),
|
|
|
cabinet=data.get('cabinet', ''),
|
|
|
@@ -203,6 +210,8 @@ def import_assets_from_excel(ws, category_map, operator=None):
|
|
|
warranty_expire=warranty_expire,
|
|
|
supplier=data.get('supplier', ''),
|
|
|
responsible_person=data.get('responsible_person', ''),
|
|
|
+ department=data.get('department', ''),
|
|
|
+ user=data.get('user', ''),
|
|
|
status=status,
|
|
|
remark=data.get('remark', ''),
|
|
|
created_by=operator,
|