|
@@ -93,22 +93,24 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<ObjectDigital> update(List<ObjectDigital> voList) {
|
|
|
|
|
|
+ public List<ObjectDigital> update(List<ObjectDigital> voList){
|
|
if(CollUtil.isEmpty(voList)) {
|
|
if(CollUtil.isEmpty(voList)) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
//获取$remove字段
|
|
//获取$remove字段
|
|
Map<String, Object> removeMap = getRemoveInfo(voList);
|
|
Map<String, Object> removeMap = getRemoveInfo(voList);
|
|
-
|
|
|
|
- //信息点校验
|
|
|
|
- Map<String, Map<String, ObjectInfoDefine>> allInfoMap = validateOnSave(voList, true);
|
|
|
|
-
|
|
|
|
//获取基础属性
|
|
//获取基础属性
|
|
Set<String> fieldSet = ReflectUtil.getFieldMap(ObjectDigital.class).keySet();
|
|
Set<String> fieldSet = ReflectUtil.getFieldMap(ObjectDigital.class).keySet();
|
|
-
|
|
|
|
|
|
+ //查询数据库中存在的数据
|
|
List<String> idList = CollUtil.getFieldValues(voList, BaseEntity.PROP_ID, String.class);
|
|
List<String> idList = CollUtil.getFieldValues(voList, BaseEntity.PROP_ID, String.class);
|
|
List<ObjectDigital> dbList = dao.selectBatchIds(idList);
|
|
List<ObjectDigital> dbList = dao.selectBatchIds(idList);
|
|
Map<String, ObjectDigital> dbMap = CollectionUtil.fieldValueMap(dbList, BaseEntity.PROP_ID);
|
|
Map<String, ObjectDigital> dbMap = CollectionUtil.fieldValueMap(dbList, BaseEntity.PROP_ID);
|
|
|
|
+
|
|
|
|
+ //填充classCode
|
|
|
|
+ fillClassCodeForUpdate(voList,dbMap);
|
|
|
|
+ //信息点校验
|
|
|
|
+ Map<String, Map<String, ObjectInfoDefine>> allInfoMap = validateOnSave(voList, true);
|
|
|
|
+
|
|
voList.forEach(vo -> {
|
|
voList.forEach(vo -> {
|
|
ObjectDigital dbVO = MapUtil.get(dbMap, vo.getId(), ObjectDigital.class);
|
|
ObjectDigital dbVO = MapUtil.get(dbMap, vo.getId(), ObjectDigital.class);
|
|
// 容错处理
|
|
// 容错处理
|
|
@@ -148,12 +150,26 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
|
|
* @param voList
|
|
* @param voList
|
|
*/
|
|
*/
|
|
private Map<String, Map<String, ObjectInfoDefine>> validateInfoCode(List<ObjectDigital> voList) {
|
|
private Map<String, Map<String, ObjectInfoDefine>> validateInfoCode(List<ObjectDigital> voList) {
|
|
- // 查询信息点定义
|
|
|
|
|
|
+ //获取该信息点当前classCode
|
|
List<String> typeCodeList = CollUtil.getFieldValues(voList, "classCode", String.class);
|
|
List<String> typeCodeList = CollUtil.getFieldValues(voList, "classCode", String.class);
|
|
|
|
+
|
|
|
|
+ //查询通用类型:equipment,building,floor,space等
|
|
|
|
+ Map<String, String> objTypeMap = typeService.queryObjTypeMap();
|
|
|
|
+ queryParentClassCode(typeCodeList,objTypeMap);
|
|
|
|
+
|
|
|
|
+ // 查询信息点定义
|
|
Map<String, Map<String, ObjectInfoDefine>> allInfoMap = infoService.queryByTypes(typeCodeList);
|
|
Map<String, Map<String, ObjectInfoDefine>> allInfoMap = infoService.queryByTypes(typeCodeList);
|
|
// 信息点校验器
|
|
// 信息点校验器
|
|
for(ObjectDigital vo:voList) {
|
|
for(ObjectDigital vo:voList) {
|
|
Map<String, ObjectInfoDefine> infoMap = allInfoMap.get(vo.getClassCode());
|
|
Map<String, ObjectInfoDefine> infoMap = allInfoMap.get(vo.getClassCode());
|
|
|
|
+ String objType = objTypeMap.get(vo.getClassCode());
|
|
|
|
+ //设置通用信息点
|
|
|
|
+ if(!objType.equals(vo.getClassCode())){
|
|
|
|
+ Map<String, ObjectInfoDefine> commonInfoDefineMap = allInfoMap.get(objType);
|
|
|
|
+ if(commonInfoDefineMap!=null || commonInfoDefineMap.size()>0){
|
|
|
|
+ infoMap.putAll(commonInfoDefineMap);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
if(MapUtil.isEmpty(infoMap)) {
|
|
if(MapUtil.isEmpty(infoMap)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
@@ -197,6 +213,29 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 查询对应的通用类型
|
|
|
|
+ * @param typeCodeList
|
|
|
|
+ */
|
|
|
|
+ private void queryParentClassCode(List<String> typeCodeList,Map<String, String> objTypeMap){
|
|
|
|
+ if(typeCodeList == null || typeCodeList.size()<=0){
|
|
|
|
+ return ;
|
|
|
|
+ }
|
|
|
|
+ //查询classCode对应点objType
|
|
|
|
+ List<String> parentCodes = new ArrayList<>();
|
|
|
|
+ for (String classCode : typeCodeList) {
|
|
|
|
+ String objType = objTypeMap.get(classCode);
|
|
|
|
+ if(StringUtils.isEmpty(objType) || "0".equals(objType) || parentCodes.contains(objType)){
|
|
|
|
+ return ;
|
|
|
|
+ }
|
|
|
|
+ parentCodes.add(objType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(parentCodes!=null && parentCodes.size()>0){
|
|
|
|
+ typeCodeList.addAll(parentCodes);
|
|
|
|
+ }
|
|
|
|
+ return ;
|
|
|
|
+ }
|
|
|
|
+ /**
|
|
* 数据合并
|
|
* 数据合并
|
|
* @param dbVO 源数据
|
|
* @param dbVO 源数据
|
|
* @param vo 目标数据
|
|
* @param vo 目标数据
|
|
@@ -305,8 +344,21 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- private void getDefaultValue(List<ObjectDigital> voList){
|
|
|
|
-
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 修改时填充classCode
|
|
|
|
+ * @param voList
|
|
|
|
+ * @param dbMap
|
|
|
|
+ */
|
|
|
|
+ private void fillClassCodeForUpdate(List<ObjectDigital> voList,Map<String, ObjectDigital> dbMap){
|
|
|
|
+ if(voList == null || voList.size()<=0){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ for (ObjectDigital digital : voList) {
|
|
|
|
+ ObjectDigital dbDigital = dbMap.get(digital.getId());
|
|
|
|
+ if(dbDigital!=null){
|
|
|
|
+ digital.setClassCode(dbDigital.getClassCode());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|