|
@@ -13,6 +13,7 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
import com.persagy.common.criteria.JacksonCriteria;
|
|
|
import com.persagy.common.web.ListResponse;
|
|
|
import com.persagy.common.web.PagedResponse;
|
|
|
+import com.persagy.dmp.config.DmpParameterStorage;
|
|
|
import com.persagy.dmp.rwd.constants.*;
|
|
|
import com.persagy.dmp.rwd.entity.ObjectInstance;
|
|
|
import com.persagy.dmp.rwd.enums.ObjType;
|
|
@@ -22,6 +23,8 @@ import com.persagy.dmp.rwd.handler.ResponseCode;
|
|
|
import com.persagy.dmp.rwd.handler.SpringHelper;
|
|
|
import com.persagy.dmp.rwd.model.ClassDefModel;
|
|
|
import com.persagy.dmp.rwd.model.FuncidDefModel;
|
|
|
+import com.persagy.dmp.rwd.model.rwd.RelCodeDTO;
|
|
|
+import com.persagy.dmp.rwd.model.rwd.UploadDTO;
|
|
|
import com.persagy.dmp.rwd.repository.ObjectInstanceRepository;
|
|
|
import com.persagy.dmp.rwd.repository.ProjectDao;
|
|
|
import com.persagy.dmp.rwd.service.*;
|
|
@@ -82,6 +85,8 @@ public class BatchHandleObjectServiceImpl extends BaseService implements BatchHa
|
|
|
private static final String EQUIPMENT_OBJECT_INFOS_SHEET_NAME="equipmentObjectInfos";
|
|
|
/**专业系统设备类sheet*/
|
|
|
private static final String OBJECT_CLAZZ_SHEET_NAME="objectClazz";
|
|
|
+ /**关系类sheet*/
|
|
|
+ private static final String REL_CODES_SHEET_NAME="relCodes";
|
|
|
/**楼层定义sheet*/
|
|
|
private static final String FLOOR_IDENTITIES_SHEET_NAME="floorIdentities";
|
|
|
|
|
@@ -133,7 +138,6 @@ public class BatchHandleObjectServiceImpl extends BaseService implements BatchHa
|
|
|
@Override
|
|
|
public void uploadObjectTemplateFile(MultipartFile file, HttpServletRequest request,
|
|
|
HttpServletResponse response,String groupCode) throws IOException {
|
|
|
- Workbook workbook = WorkbookUtil.createBook(file.getInputStream());
|
|
|
// 1.获得各个sheet的列表数据
|
|
|
ExcelReader commonObjectSheet = ExcelUtil.getReader(file.getInputStream(),0);
|
|
|
ExcelReader equipObjectSheet = ExcelUtil.getReader(file.getInputStream(),1);
|
|
@@ -145,52 +149,65 @@ public class BatchHandleObjectServiceImpl extends BaseService implements BatchHa
|
|
|
ExcelReader spaceZonesSheet = ExcelUtil.getReader(file.getInputStream(), SPACE_ZONES_SHEET_NAME);
|
|
|
ExcelReader spaceFuncTypesSheet = ExcelUtil.getReader(file.getInputStream(), SPACE_FUNC_TYPES_SHEET_NAME);
|
|
|
ExcelReader objectClazzSheet = ExcelUtil.getReader(file.getInputStream(), OBJECT_CLAZZ_SHEET_NAME);
|
|
|
- // 1.1 基础对象录入列表
|
|
|
- List<List<Object>> commonObjectUploadData = commonObjectSheet.read();
|
|
|
- // 1.2 设备对象录入列表
|
|
|
- List<List<Object>> equipObjectUploadData = equipObjectSheet.read();
|
|
|
- // 1.3 系统对象录入列表
|
|
|
- List<List<Object>> systemObjectUploadData = systemObjectSheet.read();
|
|
|
- // 1.4 系统对象信息点列表
|
|
|
- List<List<Object>> systemObjectInfosListList = systemObjectInfosSheet.read();
|
|
|
- // 1.5 设备对象信息点列表
|
|
|
- List<List<Object>> equipObjectInfosListList = equipObjectInfosSheet.read();
|
|
|
- // 1.6 建筑功能类型列表
|
|
|
- List<List<Object>> buildingFuncTypesListList = buildingFuncTypesSheet.read();
|
|
|
- // 1.7 楼层编码列表
|
|
|
- List<List<Object>> floorIdentitiesListList = floorIdentitiesSheet.read();
|
|
|
- // 1.8 空间分区列表
|
|
|
- List<List<Object>> spaceZonesListList = spaceZonesSheet.read();
|
|
|
- // 1.9 空间功能类型列表
|
|
|
- List<List<Object>> spaceFuncTypesListList = spaceFuncTypesSheet.read();
|
|
|
- // 1.10 专业系统设备类型列表
|
|
|
- List<List<Object>> objectClazzListList = objectClazzSheet.read();
|
|
|
+ ExcelReader relCodesSheet = ExcelUtil.getReader(file.getInputStream(), REL_CODES_SHEET_NAME);
|
|
|
+ // 解析数据
|
|
|
+ UploadDTO uploadDTO = UploadDTO.builder()
|
|
|
+ // 1.1 基础对象录入列表
|
|
|
+ .commonObjectUploadData(commonObjectSheet.read())
|
|
|
+ // 1.2 设备对象录入列表
|
|
|
+ .equipObjectUploadData(equipObjectSheet.read())
|
|
|
+ // 1.3 系统对象录入列表
|
|
|
+ .systemObjectUploadData(systemObjectSheet.read())
|
|
|
+ // 1.4 系统对象信息点列表
|
|
|
+ .systemObjectInfosListList(systemObjectInfosSheet.read())
|
|
|
+ // 1.5 设备对象信息点列表
|
|
|
+ .equipObjectInfosListList(equipObjectInfosSheet.read())
|
|
|
+ // 1.6 建筑功能类型列表
|
|
|
+ .buildingFuncTypesListList(buildingFuncTypesSheet.read())
|
|
|
+ // 1.7 楼层编码列表
|
|
|
+ .floorIdentitiesListList(floorIdentitiesSheet.read())
|
|
|
+ // 1.8 空间分区列表
|
|
|
+ .spaceZonesListList(spaceZonesSheet.read())
|
|
|
+ // 1.9 空间功能类型列表
|
|
|
+ .spaceFuncTypesListList(spaceFuncTypesSheet.read())
|
|
|
+ // 1.10 专业系统设备类型列表
|
|
|
+ .objectClazzListList(objectClazzSheet.read())
|
|
|
+ // 1.11 集团编码
|
|
|
+ .groupCode(groupCode)
|
|
|
+ // 1.12 账号id
|
|
|
+ .userId(DmpParameterStorage.getUserId())
|
|
|
+ // 1.13 应用id
|
|
|
+ .appId(DmpParameterStorage.getAppId())
|
|
|
+ // 1.14 关系类型列表
|
|
|
+ .relCodesListList(relCodesSheet.read())
|
|
|
+ .build();
|
|
|
// 2.获得名称与信息点的映射
|
|
|
// 2.1 {系统信息点名称:系统信息点code}映射
|
|
|
- Map<String,String> systemObjectInfosMap = createDataMap(systemObjectInfosListList,0,1);
|
|
|
+ uploadDTO.setSystemObjectInfosMap(createDataMap(uploadDTO.getSystemObjectInfosListList(),0,1));
|
|
|
// 2.2 {设备信息点名称:设备信息点code}映射
|
|
|
- Map<String,String> equipObjectInfosMap = createDataMap(equipObjectInfosListList,0,1);
|
|
|
+ uploadDTO.setEquipObjectInfosMap(createDataMap(uploadDTO.getEquipObjectInfosListList(),0,1));
|
|
|
// 2.3 {建筑功能类型名称:建筑功能类型code}映射
|
|
|
- Map<String,String> buildingFuncTypesMap = createDataMap(buildingFuncTypesListList,0,1);
|
|
|
+ uploadDTO.setBuildingFuncTypesMap(createDataMap(uploadDTO.getBuildingFuncTypesListList(),0,1));
|
|
|
// 2.4 {楼层编码名称:楼层编码code}映射
|
|
|
- Map<String,String> floorIdentitiesMap = createDataMap(floorIdentitiesListList,0,1);
|
|
|
+ uploadDTO.setFloorIdentitiesMap(createDataMap(uploadDTO.getFloorIdentitiesListList(),0,1));
|
|
|
// 2.5 {空间分区名称:空间分区code}映射
|
|
|
- Map<String,String> spaceZonesMap = createDataMap(spaceZonesListList,0,1);
|
|
|
+ uploadDTO.setSpaceZonesMap(createDataMap(uploadDTO.getSpaceZonesListList(),0,1));
|
|
|
// 2.6 {空间功能类型名称:空间功能类型code}映射
|
|
|
- Map<String,String> spaceFuncTypesMap = createDataMap(spaceFuncTypesListList,0,1);
|
|
|
+ uploadDTO.setSpaceFuncTypesMap(createDataMap(uploadDTO.getSpaceFuncTypesListList(),0,1));
|
|
|
// 2.7 {专业系统设备类型名称:专业系统设备类型code}映射
|
|
|
- Map<String,String> objectClazzMap = createDataMap(objectClazzListList,0,1);
|
|
|
+ uploadDTO.setObjectClazzMap(createDataMap(uploadDTO.getObjectClazzListList(),0,1));
|
|
|
+ uploadDTO.setRelCodesMap(createRelCodeDataMap(uploadDTO.getRelCodesListList()));
|
|
|
List<String> errorList = new ArrayList<>();
|
|
|
// 3.文件及文件表头校验
|
|
|
// 3.1 校验基础对象录入
|
|
|
FileCheckService commonFileCheckService = SpringHelper.getBean(CommonFileCheckServiceImpl.class);
|
|
|
- commonFileCheckService.checkFileIsValid(errorList,commonObjectUploadData,new HashMap<>());
|
|
|
+ commonFileCheckService.checkFileIsValid(errorList,uploadDTO.getCommonObjectUploadData(),new HashMap<>());
|
|
|
// 3.2 校验设备对象录入
|
|
|
FileCheckService equipFileCheckService = SpringHelper.getBean(EquipFileCheckServiceImpl.class);
|
|
|
- equipFileCheckService.checkFileIsValid(errorList,equipObjectUploadData,equipObjectInfosMap);
|
|
|
+ equipFileCheckService.checkFileIsValid(errorList,uploadDTO.getEquipObjectUploadData(),uploadDTO.getEquipObjectInfosMap());
|
|
|
// 3.3 校验系统对象录入
|
|
|
FileCheckService systemFileCheckService = SpringHelper.getBean(SystemFileCheckServiceImpl.class);
|
|
|
- systemFileCheckService.checkFileIsValid(errorList,systemObjectUploadData,systemObjectInfosMap);
|
|
|
+ systemFileCheckService.checkFileIsValid(errorList,uploadDTO.getSystemObjectUploadData(),uploadDTO.getSystemObjectInfosMap());
|
|
|
if (CollUtil.isNotEmpty(errorList)){
|
|
|
FileUtil.writeErrorContentToResponse(errorList,response,request, CommonConstant.UPLOAD_ERR_FILE_NAME);
|
|
|
return;
|
|
@@ -204,330 +221,90 @@ public class BatchHandleObjectServiceImpl extends BaseService implements BatchHa
|
|
|
Map<String, Map<String,List<ObjectInstance>>> spaceMap = new HashMap<>();
|
|
|
Map<String, Map<String,List<ObjectInstance>>> equipMap = new HashMap<>();
|
|
|
Map<String, Map<String,List<ObjectInstance>>> systemMap = new HashMap<>();
|
|
|
- queryExistDatas(commonObjectUploadData, equipObjectUploadData, systemObjectUploadData,
|
|
|
- projectMap, buildMap, floorMap, spaceMap, equipMap, systemMap, groupCode);
|
|
|
+ queryExistDatas(uploadDTO);
|
|
|
// 4.1 校验基础对象录入
|
|
|
- checkCommonDataIsValid(errorList,commonObjectUploadData,buildingFuncTypesMap,
|
|
|
- floorIdentitiesMap,spaceZonesMap,spaceFuncTypesMap,projectMap,buildMap,floorMap,spaceMap);
|
|
|
+ commonFileCheckService.checkDataIsValid(errorList,uploadDTO);
|
|
|
// 4.2 校验设备对象录入
|
|
|
- checkEquipDataIsValid(errorList,equipObjectUploadData,equipObjectInfosMap,objectClazzMap,projectMap,equipMap);
|
|
|
+ equipFileCheckService.checkDataIsValid(errorList,uploadDTO);
|
|
|
// 4.3 校验系统对象录入
|
|
|
- checkSystemDataIsValid(errorList,systemObjectUploadData,systemObjectInfosMap,objectClazzMap,projectMap,systemMap);
|
|
|
+ systemFileCheckService.checkDataIsValid(errorList,uploadDTO);
|
|
|
if (CollUtil.isNotEmpty(errorList)){
|
|
|
FileUtil.writeErrorContentToResponse(errorList,response,request, CommonConstant.UPLOAD_ERR_FILE_NAME);
|
|
|
return;
|
|
|
}
|
|
|
-// batchHandleUploadDatas(userId, uploadData,firstSheet, deptMap, positionMap, domainMap,
|
|
|
-// sexMap,projectMap,deptTypeMap,positionAuthoMap);
|
|
|
- response.addHeader(CommonConstant.UPLOAD_FLAG,CommonConstant.SUCCESS_FLAG_ONE);
|
|
|
- }
|
|
|
+ // 5.生成物理世界对象及其关系
|
|
|
+ // 5.1 处理基础对象录入
|
|
|
+ commonFileCheckService.batchHandleUploadDatas(uploadDTO);
|
|
|
+ // 5.2 处理设备对象录入
|
|
|
|
|
|
- /***
|
|
|
- * Description: 校验系统数据
|
|
|
- * @param errorList : 错误提示列表
|
|
|
- * @param systemObjectUploadData : 系统对象数据
|
|
|
- * @param systemObjectInfosMap : 系统信息点映射
|
|
|
- * @param objectClazzMap : 专业系统设备类型映射
|
|
|
- * @param projectMap : 项目映射
|
|
|
- * @param systemMap: 已存在的系统映射
|
|
|
- * @return : void
|
|
|
- * @author : lijie
|
|
|
- * @date :2021/9/25 0:49
|
|
|
- * Update By lijie 2021/9/25 0:49
|
|
|
- */
|
|
|
- private void checkSystemDataIsValid(List<String> errorList, List<List<Object>> systemObjectUploadData,
|
|
|
- Map<String, String> systemObjectInfosMap,
|
|
|
- Map<String, String> objectClazzMap,
|
|
|
- Map<String, ObjectInstance> projectMap,
|
|
|
- Map<String, Map<String, List<ObjectInstance>>> systemMap) {
|
|
|
- int startRowIndex = 7;
|
|
|
- if (systemObjectUploadData.size()<=startRowIndex){
|
|
|
- return;
|
|
|
- }
|
|
|
- // 1.校验设备类型必填
|
|
|
- List<Object> clazzRow = systemObjectUploadData.get(2);
|
|
|
- String relClazzCol = StrUtil.format(CommonConstant.REL_COL_FORMAT,CommonConstant.SYSTEM_SHEET_NAME,3);
|
|
|
- // 1.1 专业名称
|
|
|
- String domainName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(clazzRow.get(1)));
|
|
|
- checkContentBlank(errorList,domainName,relClazzCol, "专业");
|
|
|
- if (StrUtil.isNotBlank(domainName) && !objectClazzMap.containsKey(domainName)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relClazzCol, "专业",ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 1.2 系统类型名称
|
|
|
- String systemName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(clazzRow.get(2)));
|
|
|
- checkContentBlank(errorList,systemName,relClazzCol, "系统类");
|
|
|
- if (StrUtil.isNotBlank(systemName) && !objectClazzMap.containsKey(systemName)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relClazzCol, "系统类",ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 2.校验信息点code是否正确
|
|
|
- checkObjectInfoValid(errorList,systemObjectUploadData.get(6),systemObjectUploadData.get(4),7,
|
|
|
- systemObjectInfosMap,CommonConstant.SYSTEM_SHEET_NAME,6,4);
|
|
|
- // 3.校验必填项
|
|
|
- int equipSize = systemObjectUploadData.size();
|
|
|
- for (int i = startRowIndex; i < equipSize; i++) {
|
|
|
- String relCol = StrUtil.format(CommonConstant.REL_COL_FORMAT,CommonConstant.SYSTEM_SHEET_NAME,i+1);
|
|
|
- List<Object> datas = systemObjectUploadData.get(i);
|
|
|
- // 1.项目id:必填,是否存在
|
|
|
- String projectId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(1)));
|
|
|
- checkProjectValid(errorList,projectId,projectMap,relCol);
|
|
|
- // 2.建筑本地编码:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(2))),relCol,
|
|
|
- SystemObjectColumnEnum.BUILD_LOCAL_ID.getRelName());
|
|
|
- // 3.建筑与系统关系:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3))),relCol,
|
|
|
- SystemObjectColumnEnum.BUILD_EQUIP_REL.getRelName());
|
|
|
- // 4.系统本地编码:必填,唯一
|
|
|
- checkLocalIdExists(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(4))),projectId,
|
|
|
- systemMap,relCol,SystemObjectColumnEnum.SYSTEM_LOCAL_ID.getRelName());
|
|
|
- // 5.系统名称:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3))),relCol,
|
|
|
- SystemObjectColumnEnum.SYSTEM_LOCAL_NAME.getRelName());
|
|
|
- // 6.系统状态:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3))),relCol,
|
|
|
- SystemObjectColumnEnum.VALID.getRelName());
|
|
|
- }
|
|
|
- }
|
|
|
+ // 5.3 处理系统对象录入
|
|
|
|
|
|
- /***
|
|
|
- * Description: 校验设备数据
|
|
|
- * @param errorList : 错误提示列表
|
|
|
- * @param equipObjectUploadData : 设备对象数据
|
|
|
- * @param equipObjectInfosMap : 设备信息点映射
|
|
|
- * @param objectClazzMap : 专业系统设备类型映射
|
|
|
- * @param projectMap : 项目映射
|
|
|
- * @param equipMap: 已存在的设备映射
|
|
|
- * @return : void
|
|
|
- * @author : lijie
|
|
|
- * @date :2021/9/25 0:49
|
|
|
- * Update By lijie 2021/9/25 0:49
|
|
|
- */
|
|
|
- private void checkEquipDataIsValid(List<String> errorList, List<List<Object>> equipObjectUploadData,
|
|
|
- Map<String, String> equipObjectInfosMap,
|
|
|
- Map<String, String> objectClazzMap,
|
|
|
- Map<String, ObjectInstance> projectMap,
|
|
|
- Map<String, Map<String, List<ObjectInstance>>> equipMap) {
|
|
|
- int startRowIndex = 7;
|
|
|
- if (equipObjectUploadData.size()<=startRowIndex){
|
|
|
- return;
|
|
|
- }
|
|
|
- // 1.校验设备类型必填
|
|
|
- List<Object> clazzRow = equipObjectUploadData.get(2);
|
|
|
- String relClazzCol = StrUtil.format(CommonConstant.REL_COL_FORMAT,CommonConstant.EQUIP_SHEET_NAME,3);
|
|
|
- // 1.1 专业名称
|
|
|
- String domainName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(clazzRow.get(1)));
|
|
|
- checkContentBlank(errorList,domainName,relClazzCol, "专业");
|
|
|
- if (StrUtil.isNotBlank(domainName) && !objectClazzMap.containsKey(domainName.substring(0,domainName.lastIndexOf(StrUtil.UNDERLINE)))){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relClazzCol, "专业",ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 1.2 系统类型名称
|
|
|
- String systemName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(clazzRow.get(2)));
|
|
|
- checkContentBlank(errorList,systemName,relClazzCol, "系统类");
|
|
|
- if (StrUtil.isNotBlank(systemName) && !objectClazzMap.containsKey(systemName.substring(0,systemName.lastIndexOf(StrUtil.UNDERLINE)))){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relClazzCol, "系统类",ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 1.3 设备类型名称
|
|
|
- String equipName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(clazzRow.get(3)));
|
|
|
- checkContentBlank(errorList,equipName,relClazzCol, "设备类型");
|
|
|
- if (StrUtil.isNotBlank(equipName) && !objectClazzMap.containsKey(equipName.substring(0,equipName.lastIndexOf(StrUtil.UNDERLINE)))){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relClazzCol, "设备类型",ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 2.校验信息点code是否正确
|
|
|
- checkObjectInfoValid(errorList,equipObjectUploadData.get(6),equipObjectUploadData.get(4),7,
|
|
|
- equipObjectInfosMap,CommonConstant.EQUIP_SHEET_NAME,6,4);
|
|
|
- // 3.校验必填项
|
|
|
- int equipSize = equipObjectUploadData.size();
|
|
|
- for (int i = startRowIndex; i < equipSize; i++) {
|
|
|
- String relCol = StrUtil.format(CommonConstant.REL_COL_FORMAT,CommonConstant.EQUIP_SHEET_NAME,i+1);
|
|
|
- List<Object> datas = equipObjectUploadData.get(i);
|
|
|
- // 1.项目id:必填,是否存在
|
|
|
- String projectId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(1)));
|
|
|
- checkProjectValid(errorList,projectId,projectMap,relCol);
|
|
|
- // 2.空间本地编码:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(2))),relCol,
|
|
|
- EquipObjectColumnEnum.SPACE_LOCAL_ID.getRelName());
|
|
|
- // 3.空间与设备关系:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3))),relCol,
|
|
|
- EquipObjectColumnEnum.SPACE_EQUIP_REL.getRelName());
|
|
|
- // 4.设备本地编码:必填,唯一
|
|
|
- checkLocalIdExists(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(4))),projectId,
|
|
|
- equipMap,relCol,EquipObjectColumnEnum.EQUIP_LOCAL_ID.getRelName());
|
|
|
- // 5.设备名称:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3))),relCol,
|
|
|
- EquipObjectColumnEnum.EQUIP_LOCAL_NAME.getRelName());
|
|
|
- // 6.有效状态:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3))),relCol,
|
|
|
- EquipObjectColumnEnum.VALID.getRelName());
|
|
|
- }
|
|
|
- }
|
|
|
- /***
|
|
|
- * Description: 校验信息点code是否正确
|
|
|
- * @param errorList : 错误列表
|
|
|
- * @param infosNameList : 信息点名称列表
|
|
|
- * @param infosCodeList : 信息点code列表
|
|
|
- * @param colStartIndex : 列起始索引
|
|
|
- * @param objectInfosMap : 对象信息点映射
|
|
|
- * @return : void
|
|
|
- * @author : lijie
|
|
|
- * @date :2021/9/25 1:20
|
|
|
- * Update By lijie 2021/9/25 1:20
|
|
|
- */
|
|
|
- private void checkObjectInfoValid(List<String> errorList, List<Object> infosNameList, List<Object> infosCodeList,
|
|
|
- Integer colStartIndex, Map<String, String> objectInfosMap,String sheetName,
|
|
|
- Integer nameIndex,Integer codeIndex) {
|
|
|
- if (CollUtil.isEmpty(infosNameList) || infosNameList.size()<=colStartIndex){
|
|
|
- return;
|
|
|
- }
|
|
|
- for (int i = colStartIndex; i < infosNameList.size(); i++) {
|
|
|
- String nameRelCol = StrUtil.format(CommonConstant.REL_ROW_COL_FORMAT,sheetName,nameIndex+1,i+1);
|
|
|
- String codeRelCol = StrUtil.format(CommonConstant.REL_ROW_COL_FORMAT,sheetName,codeIndex+1,i+1);
|
|
|
- String name = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(infosNameList.get(i)));
|
|
|
- String code = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(infosCodeList.get(i)));
|
|
|
- checkContentBlank(errorList,name,nameRelCol,"信息点名称");
|
|
|
- checkContentBlank(errorList,code,codeRelCol,"信息点code");
|
|
|
- if (StrUtil.isNotBlank(name) && !objectInfosMap.containsKey(name)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(nameRelCol, "信息点名称",ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- if (StrUtil.isNotBlank(name) && StrUtil.isNotBlank(code) && !objectInfosMap.containsValue(code)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(codeRelCol, "信息点code",ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- }
|
|
|
+ response.addHeader(CommonConstant.UPLOAD_FLAG,CommonConstant.SUCCESS_FLAG_ONE);
|
|
|
}
|
|
|
-
|
|
|
/***
|
|
|
- * Description: 校验基础对象录入的数据
|
|
|
- * @param errorList : 错误提示列表
|
|
|
- * @param commonObjectUploadData : 基础对象录入数据
|
|
|
- * @param buildingFuncTypesMap : 建筑功能类型名称和建筑功能类型code的映射
|
|
|
- * @param floorIdentitiesMap : 楼层编码名称和楼层编码code的映射
|
|
|
- * @param spaceZonesMap : 空间分区名称和空间分区code的映射
|
|
|
- * @param spaceFuncTypesMap : 空间功能类型名称和空间功能类型code的映射
|
|
|
- * @param projectMap: 项目id与项目对象的映射
|
|
|
- * @param buildMap:建筑本地编码与建筑对象的映射
|
|
|
- * @param floorMap:楼层本地编码与楼层对象的映射
|
|
|
- * @param spaceMap:空间本地编码与空间对象的映射
|
|
|
- * @return : void
|
|
|
+ * Description: 解析关系类型的对象
|
|
|
+ * @param relCodesListList : 关系类型对象列表
|
|
|
+ * @return : java.util.Map<java.lang.String,com.persagy.dmp.rwd.model.rwd.RelCodeDTO>
|
|
|
* @author : lijie
|
|
|
- * @date :2021/9/24 17:30
|
|
|
- * Update By lijie 2021/9/24 17:30
|
|
|
+ * @date :2021/9/27 0:07
|
|
|
+ * Update By lijie 2021/9/27 0:07
|
|
|
*/
|
|
|
- private void checkCommonDataIsValid(List<String> errorList, List<List<Object>> commonObjectUploadData,
|
|
|
- Map<String, String> buildingFuncTypesMap, Map<String, String> floorIdentitiesMap,
|
|
|
- Map<String, String> spaceZonesMap, Map<String, String> spaceFuncTypesMap,
|
|
|
- Map<String, ObjectInstance> projectMap,
|
|
|
- Map<String, Map<String, List<ObjectInstance>>> buildMap,
|
|
|
- Map<String, Map<String, List<ObjectInstance>>> floorMap,
|
|
|
- Map<String, Map<String, List<ObjectInstance>>> spaceMap) {
|
|
|
- int startRowIndex=2;
|
|
|
- if (commonObjectUploadData.size()<=startRowIndex){
|
|
|
- return;
|
|
|
+ private Map<String, RelCodeDTO> createRelCodeDataMap(List<List<Object>> relCodesListList) {
|
|
|
+ if (CollUtil.isEmpty(relCodesListList)){
|
|
|
+ return new HashMap<>();
|
|
|
}
|
|
|
- int objSize = commonObjectUploadData.size();
|
|
|
- for (int i = startRowIndex; i < objSize; i++) {
|
|
|
- String relCol = StrUtil.format(CommonConstant.REL_COL_FORMAT,CommonConstant.COMMON_SHEET_NAME,i+1);
|
|
|
- List<Object> datas = commonObjectUploadData.get(i);
|
|
|
- // 1.项目id:必填,是否存在
|
|
|
- String projectId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(0)));
|
|
|
- checkProjectValid(errorList,projectId,projectMap,relCol);
|
|
|
- // 2.建筑本地编码:必填,是否在项目下有重复
|
|
|
- String buildLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(1)));
|
|
|
- checkLocalIdExists(errorList,buildLocalId,projectId,buildMap,relCol,CommonObjectColumnEnum.BUILD_LOCAL_ID.getRealName());
|
|
|
- // 3.建筑本地名称:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(2))),relCol,CommonObjectColumnEnum.BUILD_LOCAL_NAME.getRealName());
|
|
|
- // 4.建筑功能类型:必填,是否存在
|
|
|
- String buildFuncType = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(3)));
|
|
|
- checkContentBlank(errorList,buildFuncType,relCol,CommonObjectColumnEnum.BUILD_FUNC_TYPE.getRealName());
|
|
|
- if (StrUtil.isNotBlank(buildFuncType) && !buildingFuncTypesMap.containsKey(buildFuncType)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relCol, CommonObjectColumnEnum.BUILD_FUNC_TYPE.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 5.楼层本地编码:必填,是否在项目下有重复
|
|
|
- String floorLocalId = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(4)));
|
|
|
- checkLocalIdExists(errorList,floorLocalId,projectId,floorMap,relCol,CommonObjectColumnEnum.FLOOR_LOCAL_ID.getRealName());
|
|
|
- // 6.楼层本地名称:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(5))),relCol,CommonObjectColumnEnum.FLOOR_LOCAL_NAME.getRealName());
|
|
|
- // 7.楼层编码:必填,是否存在
|
|
|
- String floorIdentity = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(6)));
|
|
|
- checkContentBlank(errorList,floorIdentity,relCol,CommonObjectColumnEnum.FLOOR_IDENTITY.getRealName());
|
|
|
- if (StrUtil.isNotBlank(floorIdentity) && !floorIdentitiesMap.containsKey(floorIdentity)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relCol, CommonObjectColumnEnum.FLOOR_IDENTITY.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 8.空间本地编码:必填,是否在项目下有重复
|
|
|
- checkLocalIdExists(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(7))),
|
|
|
- projectId,spaceMap,relCol,CommonObjectColumnEnum.SPACE_LOCAL_ID.getRealName());
|
|
|
- // 9.空间名称:必填
|
|
|
- checkContentBlank(errorList,CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(8))),
|
|
|
- relCol,CommonObjectColumnEnum.SPACE_LOCAL_NAME.getRealName());
|
|
|
- // 10.空间分区:必填,是否存在
|
|
|
- String spaceZone = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(9)));
|
|
|
- checkContentBlank(errorList,spaceZone,relCol,CommonObjectColumnEnum.SPACE_ZONE.getRealName());
|
|
|
- if (StrUtil.isNotBlank(spaceZone) && !spaceZonesMap.containsKey(spaceZone)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relCol, CommonObjectColumnEnum.SPACE_ZONE.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- // 11.空间功能类型:必填,是否存在
|
|
|
- String spaceFuncType = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(datas.get(10)));
|
|
|
- checkContentBlank(errorList,spaceFuncType,relCol,CommonObjectColumnEnum.SPACE_FUNC_TYPE.getRealName());
|
|
|
- if (StrUtil.isNotBlank(spaceFuncType) && !spaceFuncTypesMap.containsKey(spaceFuncType)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relCol, CommonObjectColumnEnum.SPACE_FUNC_TYPE.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- /***
|
|
|
- * Description: 校验项目是否为空且存在
|
|
|
- * @param errorList : 错误列表
|
|
|
- * @param projectId : 项目id
|
|
|
- * @param projectMap : 项目映射
|
|
|
- * @param relCol : 真实行
|
|
|
- * @return : void
|
|
|
- * @author : lijie
|
|
|
- * @date :2021/9/25 1:37
|
|
|
- * Update By lijie 2021/9/25 1:37
|
|
|
- */
|
|
|
- private void checkProjectValid(List<String> errorList, String projectId, Map<String, ObjectInstance> projectMap,String relCol) {
|
|
|
- checkContentBlank(errorList,projectId,relCol,CommonObjectColumnEnum.PROJECT_ID.getRealName());
|
|
|
- if (StrUtil.isNotBlank(projectId) && !projectMap.containsKey(projectId)){
|
|
|
- errorList.add(StrUtil.appendIfMissing(relCol, CommonObjectColumnEnum.PROJECT_ID.getRealName(),ErrorEnum.NO_EXIST_ERROR.getDesc()));
|
|
|
+ Map<String,RelCodeDTO> dataMap = new HashMap<>();
|
|
|
+ for (List<Object> objects : relCodesListList) {
|
|
|
+ String relName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(objects.get(0)));
|
|
|
+ String relCode = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(objects.get(1)));
|
|
|
+ String graphName = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(objects.get(2)));
|
|
|
+ String graphCode = CharSequenceUtil.trimToEmpty(StrUtil.utf8Str(objects.get(3)));
|
|
|
+ dataMap.put(relName, RelCodeDTO.builder()
|
|
|
+ .relCodeName(relName)
|
|
|
+ .relCode(relCode)
|
|
|
+ .graphName(graphName)
|
|
|
+ .graphCode(graphCode)
|
|
|
+ .build());
|
|
|
}
|
|
|
+ return dataMap;
|
|
|
}
|
|
|
|
|
|
/***
|
|
|
* Description: 获取已存在的项目id,建筑本地编码,楼层本地编码,空间本地编码
|
|
|
- * @param commonObjectUploadData : 基本对象录入数据
|
|
|
- * @param equipObjectUploadData : 设备对象录入数据
|
|
|
- * @param systemObjectUploadData : 系统对象录入数据
|
|
|
- * @param projectMap : 项目本地编码与项目信息的映射
|
|
|
- * @param buildMap : 建筑本地编码与建筑信息的映射
|
|
|
- * @param floorMap : 楼层本地编码与楼层信息的映射
|
|
|
- * @param spaceMap : 空间本地编码与空间信息的映射
|
|
|
- * @param equipMap : 设备本地编码与设备信息的映射
|
|
|
- * @param systemMap : 系统本地编码与系统信息的映射
|
|
|
- * @param groupCode : 集团编码
|
|
|
+ * @param uploadDTO : 存储数据的DTO对象
|
|
|
* @return : java.util.Set<java.lang.String>
|
|
|
* @author : lijie
|
|
|
* @date :2021/9/24 20:43
|
|
|
* Update By lijie 2021/9/24 20:43
|
|
|
*/
|
|
|
- private Set<String> queryExistDatas(List<List<Object>> commonObjectUploadData, List<List<Object>> equipObjectUploadData,
|
|
|
- List<List<Object>> systemObjectUploadData, Map<String, ObjectInstance> projectMap,
|
|
|
- Map<String, Map<String,List<ObjectInstance>>> buildMap, Map<String, Map<String,List<ObjectInstance>>> floorMap,
|
|
|
- Map<String, Map<String,List<ObjectInstance>>> spaceMap, Map<String, Map<String,List<ObjectInstance>>> equipMap,
|
|
|
- Map<String, Map<String,List<ObjectInstance>>> systemMap,String groupCode) {
|
|
|
+ private Set<String> queryExistDatas(UploadDTO uploadDTO) {
|
|
|
// 1.获得有效的项目id
|
|
|
Set<String> transferProjectIds = new HashSet<>();
|
|
|
- Set<String> validTableNames = queryValidTableNames(commonObjectUploadData,equipObjectUploadData,
|
|
|
- systemObjectUploadData,groupCode,transferProjectIds);
|
|
|
+ Set<String> validTableNames = queryValidTableNames(uploadDTO.getCommonObjectUploadData(),
|
|
|
+ uploadDTO.getEquipObjectUploadData(), uploadDTO.getSystemObjectUploadData(),
|
|
|
+ uploadDTO.getGroupCode(),transferProjectIds);
|
|
|
if (CollUtil.isEmpty(validTableNames)){
|
|
|
return new HashSet<>();
|
|
|
}
|
|
|
// 2.获得所有的本地编码
|
|
|
- Set<String> localIds = queryLocalIdsFromExcel(commonObjectUploadData,equipObjectUploadData,systemObjectUploadData);
|
|
|
+ Set<String> localIds = queryLocalIdsFromExcel(uploadDTO.getCommonObjectUploadData(),
|
|
|
+ uploadDTO.getEquipObjectUploadData(),uploadDTO.getSystemObjectUploadData());
|
|
|
if (CollUtil.isEmpty(localIds) && CollUtil.isEmpty(transferProjectIds)){
|
|
|
return new HashSet<>();
|
|
|
}
|
|
|
// 3.根据表名称,项目id列表,本地编码列表查询物理世界对象集合
|
|
|
- List<ObjectInstance> objectInstances = projectDao.queryRwdObjectsMultiTablesAndLocalIds(validTableNames,transferProjectIds,localIds);
|
|
|
+ List<ObjectInstance> objectInstances = projectDao
|
|
|
+ .queryRwdObjectsMultiTablesAndLocalIds(validTableNames,transferProjectIds,localIds);
|
|
|
if (CollUtil.isEmpty(objectInstances)){
|
|
|
return new HashSet<>();
|
|
|
}
|
|
|
// 4.解析查询的对象
|
|
|
+ Map<String,ObjectInstance> projectMap = new HashMap<>();
|
|
|
+ Map<String, Map<String,List<ObjectInstance>>> buildMap = new HashMap<>();
|
|
|
+ Map<String, Map<String,List<ObjectInstance>>> floorMap = new HashMap<>();
|
|
|
+ Map<String, Map<String,List<ObjectInstance>>> spaceMap = new HashMap<>();
|
|
|
+ Map<String, Map<String,List<ObjectInstance>>> equipMap = new HashMap<>();
|
|
|
+ Map<String, Map<String,List<ObjectInstance>>> systemMap = new HashMap<>();
|
|
|
for (ObjectInstance objectInstance : objectInstances) {
|
|
|
if (ObjType.project.name().equals(objectInstance.getObjType())){
|
|
|
projectMap.put(objectInstance.getId(),objectInstance);
|
|
@@ -548,6 +325,12 @@ public class BatchHandleObjectServiceImpl extends BaseService implements BatchHa
|
|
|
fillObjectInstanceMap(systemMap,objectInstance);
|
|
|
}
|
|
|
}
|
|
|
+ uploadDTO.setProjectMap(projectMap);
|
|
|
+ uploadDTO.setBuildMap(buildMap);
|
|
|
+ uploadDTO.setFloorMap(floorMap);
|
|
|
+ uploadDTO.setSpaceMap(spaceMap);
|
|
|
+ uploadDTO.setEquipMap(equipMap);
|
|
|
+ uploadDTO.setSystemMap(systemMap);
|
|
|
return new HashSet<>();
|
|
|
}
|
|
|
/***
|