diff options
| author | zhangshuai <[email protected]> | 2023-05-24 09:32:30 +0800 |
|---|---|---|
| committer | zhangshuai <[email protected]> | 2023-05-24 09:32:30 +0800 |
| commit | dec417f2a00bf523628bde95e4e20bc2353ab4bf (patch) | |
| tree | 3f85a8f3f8614391f3b8e881a55c22a2c658b25c | |
| parent | 1f6e3fef0b0f627664a9580ec833635f06a5e45c (diff) | |
fix: NEZ-2839 修复 asset 批量修改 Attributes异常
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 |
