summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhangshuai <[email protected]>2023-05-24 09:32:30 +0800
committerzhangshuai <[email protected]>2023-05-24 09:32:30 +0800
commitdec417f2a00bf523628bde95e4e20bc2353ab4bf (patch)
tree3f85a8f3f8614391f3b8e881a55c22a2c658b25c
parent1f6e3fef0b0f627664a9580ec833635f06a5e45c (diff)
fix: NEZ-2839 修复 asset 批量修改 Attributes异常
-rw-r--r--nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetAssetServiceImpl.java74
-rw-r--r--nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetFieldMetaServiceImpl.java11
-rw-r--r--nz-admin/src/main/resources/mapper/asset/AssetFieldMetaDao.xml4
3 files changed, 50 insertions, 39 deletions
diff --git a/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetAssetServiceImpl.java b/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetAssetServiceImpl.java
index ef68ae61..a560c678 100644
--- a/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetAssetServiceImpl.java
+++ b/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetAssetServiceImpl.java
@@ -293,7 +293,7 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
List<AlertMessageEntity> alertMessageList = alertMessageService.list(new LambdaQueryWrapper<AlertMessageEntity>().eq(AlertMessageEntity::getAssetId, asset.getId()));
asset.setAlertNum(alertMessageList.size());
- List<Map<String, Object>> alert = alertMessageService.getAlertsStatBySeverity("asset",id);
+ List<Map<String, Object>> alert = alertMessageService.getAlertsStatBySeverity("asset", id);
asset.setAlert(alert);
// 不返回 密码 / 密钥信息
@@ -405,9 +405,9 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
if (ToolUtil.isNotEmpty(params.get("comment"))) {
Map commentParams = JSONUtil.toBean(JSONUtil.createObj().set("pageSize", "-1").set("content", params.get("comment")), Map.class);
- List<AssetComment> assetComments = (List<AssetComment>)assetCommentService.queryCommentPage(commentParams).getList();
+ List<AssetComment> assetComments = (List<AssetComment>) assetCommentService.queryCommentPage(commentParams).getList();
List<Integer> assetIds = assetComments.stream().map(AssetComment::getAssetId).collect(Collectors.toList());
- if(Tool.CollectionUtil.isEmpty(assetComments)){
+ if (Tool.CollectionUtil.isEmpty(assetComments)) {
assetIds.add(-99999);
}
params.put("innerAssetIdsByComment", assetIds);
@@ -706,6 +706,7 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
/**
* 校验U位置占用情况
* 补充 isUpdate 参数
+ *
* @return
*/
public boolean validateUSizeForImport(Integer start, Integer end, Cabinet cab, String assetName, boolean isUpdate) {
@@ -1099,8 +1100,9 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
/**
* asset 删除方法
* asset 删除提示关联内容:
- * baby asset
- * endpoint
+ * baby asset
+ * endpoint
+ *
* @param force 0:存在关联数据时,删除失败 1:存在关联数据时,同时删除关联数据 默认:0
* @return
*/
@@ -1113,7 +1115,7 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
List<Integer> idList = new ArrayList<>(Arrays.asList(ids));
List<AssetAsset> delAssets = this.list(new LambdaQueryWrapper<AssetAsset>().in(AssetAsset::getId, idList));
if (Tool.CollUtil.isEmpty(delAssets)) {
- return R.ok().putData("list", resultList);
+ return R.ok().putData("list", resultList);
}
for (AssetAsset assetEntity : delAssets) {
@@ -1195,8 +1197,9 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
/**
* 获取 asset 删除提示关联信息:
- * baby asset
- * endpoint
+ * baby asset
+ * endpoint
+ *
* @return
*/
private Map<Object, Object> getAssetDelRelObjectInfoMap(AssetAsset asset) {
@@ -1838,7 +1841,7 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
validateUtil.validateDuplicate("asset_asset", "manage_ip", manageIp, assetName, lineNum, AssetImportEnum.MANAGE_IP.getIndex());
String ipmiIp = dataMap.get(AssetImportEnum.IPMI_IP.getIndex());
- if(StrUtil.isNotEmpty(ipmiIp))
+ if (StrUtil.isNotEmpty(ipmiIp))
validateUtil.validateRegex(ipmiIp, Constant.REGEX_IP, lineNum, AssetImportEnum.IPMI_IP.getIndex());
// state conf 不自动添加
@@ -2155,7 +2158,7 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
assetFieldMetaService.save(meta);
}
JSONArray fieldValueArr = fieldMetaObject.getJSONArray("value");
- for(Object fieldValue : fieldValueArr){
+ for (Object fieldValue : fieldValueArr) {
AssetFieldValue value = new AssetFieldValue();
value.setMetaId(meta.getId());
value.setValue(ToolUtil.toStr(fieldValue));
@@ -2435,44 +2438,45 @@ public class AssetAssetServiceImpl extends ServiceImpl<AssetAssetDao, AssetAsset
if (ToolUtil.isEmpty(object)) {
break;
}
- // 将标签操作区分 批量删除还是批量新增或者更新
List<Integer> removeFieldIds = new ArrayList<Integer>();
- List<AssetFieldValue> addOrUpdateFields = new ArrayList<AssetFieldValue>();
+ List<AssetFieldValue> addFields = new ArrayList<AssetFieldValue>();
for (Map<String, Object> map : object) {
+ removeFieldIds.add((Integer) map.get("id"));
Integer action = (Integer) map.get("action");
- if (ToolUtil.equals(action, 1)) {
- removeFieldIds.add((Integer) map.get("id"));
- } else {
- List<AssetFieldValue> assetFieldValues = assetFieldValueService.list(new QueryWrapper<AssetFieldValue>().lambda()
- .eq(AssetFieldValue::getMetaId, map.get("id"))
- .in(AssetFieldValue::getAssetId, ids));
- // 分拣出更新数据和新增数据
- List<Integer> assetIds = assetFieldValues.stream().map(AssetFieldValue::getAssetId).collect(Collectors.toList());
- List<Integer> addIds = ids.stream().filter(item -> !assetIds.contains(item)).collect(Collectors.toList());
-
- for (AssetFieldValue assetFieldValue : assetFieldValues) {
- assetFieldValue.setValue((String) map.get("value"));
- addOrUpdateFields.add(assetFieldValue);
- }
- for (Integer id : addIds) {
- AssetFieldValue data = new AssetFieldValue();
- data.setAssetId(id);
- data.setMetaId((Integer) map.get("id"));
- data.setValue((String) map.get("value"));
- addOrUpdateFields.add(data);
+ if (ToolUtil.equals(action, 0)) {
+ //根据 meta type 判断 value 是否为多值
+ String type = (String) map.get("type");
+ if (Tool.StrUtil.equalsIgnoreCase("MULTITEXT", type) || Tool.StrUtil.equalsIgnoreCase("CHECKBOX", type)) {
+ List<String> values = (List<String>) map.get("value");
+ for (Integer id : ids) {
+ for (String value : values) {
+ AssetFieldValue data = new AssetFieldValue();
+ data.setAssetId(id);
+ data.setMetaId((Integer) map.get("id"));
+ data.setValue(value);
+ addFields.add(data);
+ }
+ }
+ }else {
+ for (Integer id : ids) {
+ AssetFieldValue data = new AssetFieldValue();
+ data.setAssetId(id);
+ data.setMetaId((Integer) map.get("id"));
+ data.setValue((String) map.get("value"));
+ addFields.add(data);
+ }
}
}
}
-
if (ToolUtil.isNotEmpty(removeFieldIds)) {
assetFieldValueService.remove(new QueryWrapper<AssetFieldValue>()
.lambda().in(AssetFieldValue::getMetaId, removeFieldIds)
.in(AssetFieldValue::getAssetId, ids));
}
- if (ToolUtil.isNotEmpty(addOrUpdateFields)) {
- assetFieldValueService.saveOrUpdateBatch(addOrUpdateFields);
+ if (ToolUtil.isNotEmpty(addFields)) {
+ assetFieldValueService.saveOrUpdateBatch(addFields);
}
break;
case 3:
diff --git a/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetFieldMetaServiceImpl.java b/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetFieldMetaServiceImpl.java
index 9205f2b1..7650a27d 100644
--- a/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetFieldMetaServiceImpl.java
+++ b/nz-admin/src/main/java/com/nis/modules/asset/service/impl/AssetFieldMetaServiceImpl.java
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nis.common.exception.NZException;
import com.nis.common.utils.*;
+import com.nis.modules.agent.entity.Agent;
import com.nis.modules.asset.dao.AssetFieldMetaDao;
import com.nis.modules.asset.dao.AssetFieldValueDao;
import com.nis.modules.asset.entity.AssetFieldMeta;
@@ -26,6 +27,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
@Service("assetFieldMetaService")
public class AssetFieldMetaServiceImpl extends ServiceImpl<AssetFieldMetaDao,AssetFieldMeta> implements AssetFieldMetaService{
@@ -101,7 +103,16 @@ public class AssetFieldMetaServiceImpl extends ServiceImpl<AssetFieldMetaDao,Ass
@Override
public List<AssetFieldMeta> getAssetFieldMetaListByAssetId(Integer assetId) {
List<AssetFieldMeta> metaList = assetFieldMetaDao.selectMateInfoListByAssetId(assetId);
+ List<Integer> metaIds = metaList.stream().map(meta -> meta.getId()).collect(Collectors.toList());
+ List<AssetFieldValue> assetFieldValues = assetFieldValueDao.selectList(new LambdaQueryWrapper<AssetFieldValue>()
+ .in(AssetFieldValue::getMetaId, metaIds)
+ .eq(ObjectUtil.isNotEmpty(assetId), AssetFieldValue::getAssetId,assetId));
+
+ Map<Integer, List<AssetFieldValue>> assetFieldValueByMetaId = assetFieldValues.stream().collect(Collectors.groupingBy(AssetFieldValue::getMetaId));
+
for (AssetFieldMeta meta : metaList) {
+ List<String> values = assetFieldValueByMetaId.get(meta.getId()).stream().map(assetFieldValue -> assetFieldValue.getValue()).collect(Collectors.toList());
+ meta.setValue(values);
meta.setKey(meta.getMetaKey());
}
return metaList;
diff --git a/nz-admin/src/main/resources/mapper/asset/AssetFieldMetaDao.xml b/nz-admin/src/main/resources/mapper/asset/AssetFieldMetaDao.xml
index f3116f48..7a391ffe 100644
--- a/nz-admin/src/main/resources/mapper/asset/AssetFieldMetaDao.xml
+++ b/nz-admin/src/main/resources/mapper/asset/AssetFieldMetaDao.xml
@@ -37,9 +37,6 @@
<result column="name" property="name"/>
<result column="remark" property="remark"/>
</association>
- <collection property="value" ofType="string" javaType="list">
- <result column="val" />
- </collection>
</resultMap>
<select id="selectAssetFieldMeta" resultMap="assetFieldMeta">
@@ -118,7 +115,6 @@
<select id="selectMateInfoListByAssetId" resultMap="assetFieldMetaDetail">
SELECT
me.*,
- va.value as val,
va.asset_id,
mg.id as afg_id,
mg.name as afg_name