Browse Source

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/digital-delivery

zhaoyk 3 years ago
parent
commit
595124388b
20 changed files with 460 additions and 108 deletions
  1. 2 2
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/calculation/model/AdmRelationAddRequest.java
  2. 82 15
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/calculation/service/impl/AdmManualRelCalServiceImpl.java
  3. 7 6
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/common/client/DmpRwdClient.java
  4. 2 2
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/model/AdmObjectType.java
  5. 10 6
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/service/impl/AbstractAdmDictBaseServiceImpl.java
  6. 5 1
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/service/impl/AdmDictServiceImpl.java
  7. 19 1
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/object/controller/AdmProjectController.java
  8. 3 12
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/object/model/AdmProject.java
  9. 10 1
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/IRelationReportService.java
  10. 26 8
      adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/impl/RelationReportService.java
  11. 18 15
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/client/RwdClient.java
  12. 60 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/dto/ObjectInfoCollectDTO.java
  13. 38 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/dto/ObjectTypeCollectDTO.java
  14. 65 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/dto/RelationDefineCollectDTO.java
  15. 7 4
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/Dict.java
  16. 1 1
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/ObjectInfoCollect.java
  17. 1 1
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/RelationDefineCollect.java
  18. 13 0
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/enums/DeliveryTypeEnum.java
  19. 19 7
      adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/SyncAppImpl.java
  20. 72 26
      adm-business/adm-server/src/main/resources/db/init/data.sql

+ 2 - 2
adm-business/adm-middleware/src/main/java/com/persagy/proxy/calculation/model/AdmRelationAddRequest.java

@@ -9,8 +9,6 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Set;
 
 @Data
@@ -36,5 +34,7 @@ public class AdmRelationAddRequest implements Serializable {
     @JSONField(name = "graphicType",alternateNames = {"parentCode","graphic_type"})
     private String graphicType;
 
+    /** 交付范围 0项目交付,1现场交付**/
+    private Integer deliveryType;
 
 }

+ 82 - 15
adm-business/adm-middleware/src/main/java/com/persagy/proxy/calculation/service/impl/AdmManualRelCalServiceImpl.java

@@ -1,22 +1,23 @@
 package com.persagy.proxy.calculation.service.impl;
 
-import java.util.*;
-import java.util.stream.Collectors;
-
-import com.persagy.dmp.basic.model.QueryCriteria;
-import com.persagy.dmp.common.constant.CommonConstant;
-import com.persagy.dmp.common.helper.SpringHelper;
-import com.persagy.dmp.digital.client.DigitalObjectFacade;
-import org.springframework.stereotype.Service;
-
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.dto.RequestData;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.common.helper.SpringHelper;
 import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.delivery.entity.RelationDefineCollect;
 import com.persagy.dmp.digital.client.DigitalObjectClient;
+import com.persagy.dmp.digital.client.DigitalObjectFacade;
 import com.persagy.dmp.digital.client.DigitalRelationCaclClient;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -32,13 +33,12 @@ import com.persagy.proxy.calculation.model.AdmManualRelationCalcDel;
 import com.persagy.proxy.calculation.model.AdmRelationAddRequest;
 import com.persagy.proxy.calculation.service.AdmManualRelCalService;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.extra.spring.SpringUtil;
+import com.persagy.proxy.report.service.IRelationReportService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
 
 /***
  * Description: 手动计算逻辑处理类
@@ -53,6 +53,7 @@ public class AdmManualRelCalServiceImpl implements AdmManualRelCalService {
 
     private final DigitalRelationCaclClient digitalRelationCaclClient;
     private final DigitalObjectClient digitalObjectClient;
+    private final IRelationReportService relationReportService;
 
 
 
@@ -97,6 +98,7 @@ public class AdmManualRelCalServiceImpl implements AdmManualRelCalService {
         if (relationTypeEnum == null){
             return AdmCreateResponse.failure("不存在的关系类型");
         }
+
         // type为cadId直接提示从对象不存在CADID编码并且errorType=2
         if (AdmObjectInfoConstant.CADID.equals(request.getType()) && relationTypeEnum.getHasCheckCadId()){
             return AdmCreateResponse.failure("从对象不存在CADID编码","2");
@@ -144,7 +146,14 @@ public class AdmManualRelCalServiceImpl implements AdmManualRelCalService {
             if (fromMap.get(fromContent).size()>1){
                 return AdmCreateResponse.failure(fromContent +":存在多个实例","2");
             }
-
+        }
+        //验证 项目交付范围
+        Integer flag = validRelCollect(context, relationTypeEnum, request.getDeliveryType(), mainResultData, fromResultData);
+        switch (flag){
+            case 1 : return AdmCreateResponse.failure(mainResultData +":不存在","1");
+            case 2 : return AdmCreateResponse.failure(fromResultData +":不存在","2");
+            case 3 : return AdmCreateResponse.failure("不在项目交付范围内");
+            default:
         }
         RequestData requestData = RequestData.builder()
                 .graphCode(relationTypeEnum.getGraphCode())
@@ -493,4 +502,62 @@ public class AdmManualRelCalServiceImpl implements AdmManualRelCalService {
         temp.put("projectId", objectDigital.getProjectId());
         temp.putObject("statistics");
     }
+
+
+    /**
+     * 验证关系交付范围
+     * @param mainResultData 主对象
+     * @param fromResultData 从对象
+     * @return 0 成功; 1 主对象为空; 2 从对象为空; 3 不在项目交付范围内
+     **/
+    private Integer validRelCollect(InstanceUrlParam context, AdmRelationTypeEnum relationTypeEnum , Integer deliveryType, List<ObjectNode> mainResultData, List<ObjectNode> fromResultData){
+        if(CollUtil.isEmpty(mainResultData)){
+            return 1;
+        }
+        if(CollUtil.isEmpty(fromResultData)){
+            return 2;
+        }
+        if(deliveryType != null){
+            QueryCriteria queryCriteria = new QueryCriteria();
+            ObjectNode objectNode = JsonNodeFactory.instance.objectNode();
+            objectNode.put("projectId", context.getProjectId());
+            objectNode.put("relCode", relationTypeEnum.getRelCode());
+            objectNode.put("graphCode", relationTypeEnum.getGraphCode());
+            objectNode.put("deliveryType",deliveryType);
+            queryCriteria.setCriteria(objectNode);
+            List<RelationDefineCollect> relationDefineCollects = relationReportService.doQueryRelationDefineCollectList(context, queryCriteria);
+            if(CollUtil.isEmpty(relationDefineCollects)){
+                return 3;
+            }
+            Set<String> fromSet = new HashSet<>();
+            fromResultData.forEach(obj -> {
+                if(obj.get("classCode") != null && obj.get("classCode").isTextual()){
+                    fromSet.add(obj.get("classCode").asText());
+                }
+            });
+
+            Set<String> mainSet = new HashSet<>();
+            mainResultData.forEach(obj -> {
+                if(obj.get("classCode") != null && obj.get("classCode").isTextual()){
+                    mainSet.add(obj.get("classCode").asText());
+                }
+            });
+            //关系无方向性
+            for(RelationDefineCollect collect : relationDefineCollects){
+                ArrayNode sourceTypeCodes = collect.getSourceTypeCodes();
+                Set<String> sourceTypeCodeSet = CollUtil.newHashSet();
+                sourceTypeCodes.forEach(classCode -> sourceTypeCodeSet.add(classCode.isTextual() ? classCode.asText() : ""));
+                ArrayNode endTypeCodes = collect.getEndTypeCodes();
+                Set<String> endTypeCodeSet = CollUtil.newHashSet();
+                endTypeCodes.forEach(classCode -> endTypeCodeSet.add(classCode.isTextual() ? classCode.asText() : ""));
+                if(sourceTypeCodeSet.contains(mainSet) && endTypeCodeSet.contains(endTypeCodeSet)){
+                    return 0;
+                }
+                if(sourceTypeCodeSet.contains(endTypeCodes) && endTypeCodeSet.contains(mainSet)){
+                    return 0;
+                }
+            }
+        }
+        return 3;
+    }
 }

+ 7 - 6
adm-business/adm-middleware/src/main/java/com/persagy/proxy/common/client/DmpRwdClient.java

@@ -4,6 +4,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.dmp.basic.config.DigitalFeignConfig;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.delivery.dto.ObjectInfoCollectDTO;
+import com.persagy.dmp.delivery.entity.ObjectTypeCollect;
+import com.persagy.dmp.delivery.entity.RelationDefineCollect;
 import com.persagy.proxy.common.constant.DmpUrlConstant;
 import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
@@ -192,7 +196,7 @@ public interface DmpRwdClient {
      * @return: com.persagy.dmp.common.DmpResult
      */
     @PostMapping(DmpUrlConstant.DEF_FUNCID_COLLECT)
-    DmpResult<JSONArray> queryObjectInfoCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
+    CommonResult<List<ObjectInfoCollectDTO>> queryObjectInfoCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
 
 
     /**
@@ -222,10 +226,7 @@ public interface DmpRwdClient {
      * @return: com.persagy.dmp.common.DmpResult
      */
     @PostMapping(DmpUrlConstant.DEF_CLASS_COLLECT)
-    DmpResult<JSONArray> queryObjectClassCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
-
-
-
+    DmpResult<List<ObjectTypeCollect>> queryObjectClassCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
 
     /**
      * @description: 查询交付关系
@@ -234,7 +235,7 @@ public interface DmpRwdClient {
      * @return: com.persagy.dmp.common.DmpResult
      */
     @PostMapping(DmpUrlConstant.DEF_REL_COLLECT)
-    DmpResult<JSONArray> queryObjectRelCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
+    DmpResult<List<RelationDefineCollect>> queryObjectRelCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
 
 
 }

+ 2 - 2
adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/model/AdmObjectType.java

@@ -63,7 +63,7 @@ public class AdmObjectType {
     private String lastUpdate;
 
     /** 交付类型:0-项目交付 1-现场交付  */
-    private Integer deliveryType = -1;
+    private Integer deliveryType ;
     /** 是否交付 0-否 1-是 */
-    private Integer isDelivery = -1;
+    private Integer isDelivery ;
 }

+ 10 - 6
adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/service/impl/AbstractAdmDictBaseServiceImpl.java

@@ -10,8 +10,9 @@ import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.constant.ValidEnum;
 import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.JsonHelper;
-import com.persagy.dmp.delivery.entity.ObjectInfoCollect;
+import com.persagy.dmp.delivery.dto.ObjectInfoCollectDTO;
 import com.persagy.dmp.delivery.entity.ObjectTypeCollect;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmDictConstant;
@@ -31,7 +32,10 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName AbstractAdmDictBaseServiceImpl
@@ -341,8 +345,8 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
         }
         // 调用中台查询
         log.info(para.toString());
-        DmpResult<JSONArray> dmpResult = rwdClient.queryObjectInfoCollect(context, para);
-        List<ObjectInfoCollect> admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), request.getProjection(), ObjectInfoCollect.class);
+        CommonResult<List<ObjectInfoCollectDTO>> dmpResult = rwdClient.queryObjectInfoCollect(context, para);
+        List<ObjectInfoCollectDTO> admVOs = dmpResult.getData();
         // 设置返回值
         AdmResponse response = AdmResponse.success(admVOs);
         Long total = dmpResult.getCount() == null ? null : dmpResult.getCount().longValue();
@@ -365,8 +369,8 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
         }
         // 调用中台查询
         log.info(para.toString());
-        DmpResult<JSONArray> dmpResult = rwdClient.queryObjectClassCollect(context, para);
-        List<ObjectTypeCollect> admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), null, ObjectTypeCollect.class);
+        DmpResult<List<ObjectTypeCollect>> dmpResult = rwdClient.queryObjectClassCollect(context, para);
+        List<ObjectTypeCollect> admVOs = dmpResult.getData();
         // 设置返回值
         AdmResponse response = AdmResponse.success(admVOs);
         return response;

+ 5 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/dictionary/service/impl/AdmDictServiceImpl.java

@@ -88,14 +88,17 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             admResponse = queryDictObjectTypeTree(context ,type,clazz);
         }
 
+        //获取交付范围内的设备
         QueryCriteria criteriaCollect = new QueryCriteria();
         ObjectNode nodeCol = JsonNodeFactory.instance.objectNode();
         nodeCol.put("objType", type);
+        nodeCol.put("projectId", context.getProjectId());
         criteriaCollect.setCriteria(nodeCol);
 
         AdmResponse colType = doQueryObjectTypeCollect(context, criteriaCollect);
         List<AdmObjectType> admObjectTypes = (List<AdmObjectType>) admResponse.getContent();
         List<ObjectTypeCollect> collectList = (List<ObjectTypeCollect>) colType.getContent();
+        //标记项目范围内的设备类
         admResponse.setContent(doSetObjectTypeCollect(admObjectTypes, collectList));
         return admResponse;
     }
@@ -597,7 +600,8 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         if("common".equals(dictType)){
             criteria.setFilters("groupCode = '0' and projectId = '0'");
         }else{
-            criteria.setFilters("groupCode = '"+context.getGroupCode()+"' and projectId = '"+context.getProjectId()+"'");
+            //criteria.setFilters("groupCode = '"+context.getGroupCode()+"' and projectId = '"+context.getProjectId()+"'");
+            criteria.setFilters(" projectId = '"+context.getProjectId()+"'");
         }
         criteria.setName(classCode);
         AdmResponse admResponse = doQueryObjectInfoCollect(context, criteria, "classCode", clazz);

+ 19 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/object/controller/AdmProjectController.java

@@ -1,5 +1,7 @@
 package com.persagy.proxy.object.controller;
 
+import cn.hutool.core.collection.CollUtil;
+import com.persagy.proxy.adm.request.AdmCreateRequest;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
@@ -8,8 +10,10 @@ import com.persagy.proxy.object.service.IAdmProjectService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
- * ADM 项目 API
+ * 项目管理
  * @author Charlie Yu
  * @date 2021-08-16
  */
@@ -43,4 +47,18 @@ public class AdmProjectController {
     public AdmResponse queryObj(@RequestBody AdmQueryCriteria request) throws Exception {
         return query(null, request);
     }
+
+
+    /**
+     * 更新项目信息
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/update")
+    public AdmResponse update(@RequestBody AdmCreateRequest<AdmProject> createRequest) throws Exception {
+        List<AdmProject> vos = CollUtil.newArrayList(createRequest.getContent());
+        vos = service.doUpdate(AdmContextUtil.toDmpContext(), AdmProject.class, vos);
+        return AdmResponse.success(vos);
+    }
 }

+ 3 - 12
adm-business/adm-middleware/src/main/java/com/persagy/proxy/object/model/AdmProject.java

@@ -1,5 +1,6 @@
 package com.persagy.proxy.object.model;
 
+import com.persagy.proxy.adm.model.AdmBaseEntity;
 import lombok.Data;
 
 import java.util.Date;
@@ -11,7 +12,7 @@ import java.util.Map;
  * @date 2021-08-16
  */
 @Data
-public class AdmProject {
+public class AdmProject extends AdmBaseEntity<AdmProject> {
     public static final String OBJ_TYPE = "project";
     /** 项目ID */
     private String id;
@@ -21,18 +22,8 @@ public class AdmProject {
     private String localId;
     /** 项目本地名称 */
     private String localName;
-    /** 项目介绍 */
-    private String introduction;
-    /** 集团编码 */
-    private String groupCode;
-    /** 商业层数 */
-    private String businessFloorNum;
-    /** 办公层数 */
-    private String officeFloorNum;
     /** 对象类型 */
-    private String objectType;
-    /** 信息点 */
-    private Map<String, Object> infos;
+    private String objectType = OBJ_TYPE;
     /** 创建时间 */
     private Date createTime;
     /** 最后更新日期 */

+ 10 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/IRelationReportService.java

@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -15,6 +16,7 @@ import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.define.entity.RelationDefine;
 import com.persagy.dmp.delivery.entity.RelationDefineCollect;
 import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 
 /**
@@ -274,6 +276,13 @@ public interface IRelationReportService {
 	 */
 	Map<String, List<ObjectNode>> findObjectNodesByPage(String groupCode, String projectId, Set<String> objTypes, String infoKey, Set<String> codes);
 
+	/**
+	 * 查询采集 范围
+	 * @param context
+	 * @param queryCriteria
+	 * @return
+	 */
+	DmpResult<List<RelationDefineCollect>> doQueryRelationDefineCollect(InstanceUrlParam context, QueryCriteria queryCriteria);
 
 	/**
 	 * 查询采集 范围
@@ -281,7 +290,7 @@ public interface IRelationReportService {
 	 * @param queryCriteria
 	 * @return
 	 */
-	List<RelationDefineCollect> doQueryRelationDefineCollect(InstanceUrlParam context, QueryCriteria queryCriteria);
+	List<RelationDefineCollect> doQueryRelationDefineCollectList(InstanceUrlParam context, QueryCriteria queryCriteria);
 
 	/**
 	 * 设置采集 范围

+ 26 - 8
adm-business/adm-middleware/src/main/java/com/persagy/proxy/report/service/impl/RelationReportService.java

@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.dto.GraphParentMes;
 import com.persagy.dmp.basic.dto.RequestData;
@@ -43,7 +44,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.strategy.relationdata.RelationObjectStrategy;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
-import com.persagy.proxy.adm.utils.AdmEntityTransferUtil;
 import com.persagy.proxy.common.client.DmpRwdClient;
 import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
@@ -413,7 +413,7 @@ public class RelationReportService implements IRelationReportService {
 	 * @return
 	 */
 	@Override
-	public List<RelationDefineCollect> doQueryRelationDefineCollect(InstanceUrlParam context, QueryCriteria queryCriteria) {
+	public DmpResult<List<RelationDefineCollect>> doQueryRelationDefineCollect(InstanceUrlParam context, QueryCriteria queryCriteria) {
 		// 转换参数
 		JSONObject para = null;
 		try {
@@ -422,8 +422,21 @@ public class RelationReportService implements IRelationReportService {
 			return null;
 		}
 		// 调用中台查询
-		DmpResult<JSONArray> dmpResult = rwdClient.queryObjectRelCollect(context, para);
-		List<RelationDefineCollect> admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), null, RelationDefineCollect.class);
+		DmpResult<List<RelationDefineCollect>> dmpResult = rwdClient.queryObjectRelCollect(context, para);
+		return dmpResult;
+	}
+
+	/**
+	 * 查询采集 范围
+	 *
+	 * @param context
+	 * @param queryCriteria
+	 * @return
+	 */
+	@Override
+	public List<RelationDefineCollect> doQueryRelationDefineCollectList(InstanceUrlParam context, QueryCriteria queryCriteria) {
+		DmpResult<List<RelationDefineCollect>> dmpResult = doQueryRelationDefineCollect(context, queryCriteria);
+		List<RelationDefineCollect> admVOs = dmpResult.getData();
 		return  admVOs;
 	}
 
@@ -805,9 +818,6 @@ public class RelationReportService implements IRelationReportService {
 	 */
 	private List<JSONObject> getGraphRelationProjectTree(String groupCode, String projectId, String content) {
 		List<JSONObject> resultList = new ArrayList<>();
-
-		//获取交付范围
-		List<RelationDefineCollect> relationDefineCollects = doQueryRelationDefineCollect(AdmContextUtil.toDmpContext(), new QueryCriteria());
 		// 1.获取所有的一级,二级图类型定义
 		QueryCriteria parentCriteria = new QueryCriteria();
 		List<GraphDefine> graphDefines = DigitalGraphDefineFacade.query(groupCode, projectId,
@@ -867,6 +877,12 @@ public class RelationReportService implements IRelationReportService {
 		}
 
 		// 组装&排序
+		// 获取交付范围
+		QueryCriteria relationCollect = new QueryCriteria();
+		ObjectNode criteria = JsonNodeFactory.instance.objectNode();
+		criteria.put("projectId", projectId);
+		relationCollect.setCriteria(criteria);
+		List<RelationDefineCollect> relationDefineCollects = doQueryRelationDefineCollectList(AdmContextUtil.toDmpContext(), relationCollect);
 		resultList = CollUtil.sort(typeMap.values(), Comparator.comparing(b -> b.getIntValue("sort")));
 		for(JSONObject result:resultList) {
 			String typeId = result.getString("graphTypeId");
@@ -993,7 +1009,7 @@ public class RelationReportService implements IRelationReportService {
 								Map<String, AdmRelationTypeEnum> graphRelTypeMap,
 								Map<String, RelationDefine> relationDefineMap,Map<String, Integer> relCountMap) {
 		String key = graphicId + StrUtil.UNDERLINE + relCode;
-		AdmRelationTypeEnum typeEnum = MapUtil.get(graphRelTypeMap, key, AdmRelationTypeEnum.class);
+ 		AdmRelationTypeEnum typeEnum = MapUtil.get(graphRelTypeMap, key, AdmRelationTypeEnum.class);
 		RelationDefine relationDefine = relationDefineMap.getOrDefault(key,new RelationDefine());
 		JSONObject result = new JSONObject();
 		result.put("count", relCountMap.getOrDefault(key,0));
@@ -1035,6 +1051,8 @@ public class RelationReportService implements IRelationReportService {
 			String valKey = key+StrUtil.UNDERLINE+zoneType;
 			result.put("count",relCountMap.getOrDefault(valKey,0));
 		}
+		//关系采集范围 默认全部,不做限制 0 项目交付 1现场交付
+		result.put("deliveryType", -1);
 		return result;
 	}
 

+ 18 - 15
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/client/RwdClient.java

@@ -1,6 +1,9 @@
 package com.persagy.adm.server.custom.client;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.adm.server.custom.dto.ObjectInfoCollectDTO;
+import com.persagy.adm.server.custom.dto.ObjectTypeCollectDTO;
+import com.persagy.adm.server.custom.dto.RelationDefineCollectDTO;
 import com.persagy.adm.server.custom.entity.InfoDef;
 import com.persagy.adm.server.custom.entity.TypeDef;
 import com.persagy.adm.server.custom.entity.db.ObjectInfoCollect;
@@ -26,31 +29,31 @@ public interface RwdClient {
 	 * 查询交付范围内类型定义
 	 */
 	@PostMapping("/rwd/def/class/collect/query")
-	CommonResult<List<ObjectTypeCollect>> queryDefineTypeCollect(@RequestParam("groupCode") String groupCode,
-												@RequestParam("projectId") String projectId,
-												@RequestParam("appId") String appId,
-												@RequestParam("userId") String userId,
-												@RequestBody QueryCriteria criteria);
+	CommonResult<List<ObjectTypeCollectDTO>> queryDefineTypeCollect(@RequestParam("groupCode") String groupCode,
+																	@RequestParam("projectId") String projectId,
+																	@RequestParam("appId") String appId,
+																	@RequestParam("userId") String userId,
+																	@RequestBody QueryCriteria criteria);
 
 	/**
 	 * 查询交付范围内关系定义
 	 */
 	@PostMapping("/rwd/def/rel/collect/query")
-	CommonResult<List<RelationDefineCollect>> queryDefineRelCollect(@RequestParam("groupCode") String groupCode,
-															 @RequestParam("projectId") String projectId,
-															 @RequestParam("appId") String appId,
-															 @RequestParam("userId") String userId,
-															 @RequestBody QueryCriteria criteria);
+	CommonResult<List<RelationDefineCollectDTO>> queryDefineRelCollect(@RequestParam("groupCode") String groupCode,
+																	   @RequestParam("projectId") String projectId,
+																	   @RequestParam("appId") String appId,
+																	   @RequestParam("userId") String userId,
+																	   @RequestBody QueryCriteria criteria);
 
 	/**
 	 * 查询交付范围内信息点定义
 	 */
 	@PostMapping("/rwd/def/funcid/collect/query")
-	CommonResult<List<ObjectInfoCollect>> queryDefineInfoCollect(@RequestParam("groupCode") String groupCode,
-												@RequestParam("projectId") String projectId,
-												@RequestParam("appId") String appId,
-												@RequestParam("userId") String userId,
-												@RequestBody QueryCriteria criteria);
+	CommonResult<List<ObjectInfoCollectDTO>> queryDefineInfoCollect(@RequestParam("groupCode") String groupCode,
+																	@RequestParam("projectId") String projectId,
+																	@RequestParam("appId") String appId,
+																	@RequestParam("userId") String userId,
+																	@RequestBody QueryCriteria criteria);
 
 	/**
 	 * 查询类型定义

+ 60 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/dto/ObjectInfoCollectDTO.java

@@ -0,0 +1,60 @@
+package com.persagy.adm.server.custom.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.persagy.adm.server.custom.entity.db.ObjectInfoCollect;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 平台/项目级采集的信息点定义
+ * @author linhuili
+ * @date 2021-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ObjectInfoCollectDTO extends ObjectInfoCollect {
+    /** 别名称 */
+    private String name;
+    /** 别编码 */
+    private String aliasCode;
+    /** 别名名称 */
+    private String aliasName;
+    /** 类型编码 */
+    private String classCode;
+    private String category;
+    /** 一级标签 */
+    private String firstTag;
+    /** 二级标签 */
+    private String secondTag;
+    /** 优先级 */
+    private String priority;
+    /** 输入方式 */
+    private String inputMode;
+    /** 单位 */
+    private String unit;
+    /** 数据类型 */
+    private String dataType;
+    /** 复数标识 */
+    private Boolean isMultiple = false;
+    /** 区间标识 */
+    private Boolean isRegion = false;
+    /** 数据格式 */
+    private String formater;
+    /** 取值范围 */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private ArrayNode dataSource;
+    /** 备注 */
+    private String remark;
+    /** 子分类标记 */
+    private Boolean subFlag;
+    /** 虚点 */
+    private Boolean weakPoint;
+    /** 显示顺序 */
+    private Long showOrder;
+    /** 版本 */
+    private String version;
+    /** 信息点来源  0-common */
+    private Integer sourceFrom;
+}

+ 38 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/dto/ObjectTypeCollectDTO.java

@@ -0,0 +1,38 @@
+package com.persagy.adm.server.custom.dto;
+
+import com.persagy.adm.server.custom.entity.db.ObjectTypeCollect;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 平台/项目级采集的信息点定义
+ * @author linhuili
+ * @date 2021-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ObjectTypeCollectDTO extends ObjectTypeCollect {
+    /** 类型名称 */
+    private String name;
+    private String aliasCode;
+    /** 别名名称 */
+    private String aliasName;
+    /** 对象类型 */
+    private String objType;
+    /** 项目ID */
+    private String projectId;
+    /** 集团编码 */
+    private String groupCode;
+    /** 专业编码:上级类型是系统/设备时该字段有值 */
+    private String majorCode;
+    /** 系统编码:上级类型是设备时该字段有值,值为系统类型的code */
+    private String systemCode;
+    /** 设备编码:上级类型是部件时该字段有值,值为设备类型的code */
+    private String equipmentCode;
+    /** 上级类型编码 */
+    private String parentCode;
+    /** 版本 */
+    private String version;
+    /** 类型来源  0-common */
+    private Integer sourceFrom;
+}

+ 65 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/dto/RelationDefineCollectDTO.java

@@ -0,0 +1,65 @@
+package com.persagy.adm.server.custom.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.persagy.adm.server.custom.entity.db.RelationDefineCollect;
+import com.persagy.dmp.basic.dto.RelationCalDTO;
+import com.persagy.dmp.basic.dto.RelationCalRuleDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 平台/项目级采集的信息点定义
+ * @author linhuili
+ * @date 2021-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RelationDefineCollectDTO extends RelationDefineCollect {
+
+    /** 图类型名称*/
+    private String graphName;
+    /** 边类型名称 */
+    private String relName;
+    /** 边方向性 */
+    private Integer directional;
+    /** 边属性 */
+    private String attribute;
+    /** 主要连接对象 */
+    private String targetObjs;
+    /** 关系处理模块提示信息,兼容数据中心而存在 */
+    private String prompting;
+    /** 备注 */
+    private String remark;
+    /** 计算关系之前需要计算的关系 */
+    private List<RelationCalDTO> beforeCalRels;
+    /** 计算器,就是计算规则 */
+    private RelationCalRuleDTO calRules;
+    /** 关系左侧的对象分类 */
+    private String fromObjType;
+    /** 关系右侧的对象分类 */
+    private String toObjType;
+    /** 自动计算类型,0-手动计算,1-自动计算,0-手动计算,1-自动计算 */
+    private Boolean automaticFlag;
+    /** 是否需要配置源末端 */
+    @TableField(value = "source_flag")
+    private Boolean sourceFlag;
+    /** 手动计算类型 1 禁用  2提示引导 3手动维护 */
+    @TableField(value = "manual")
+    private Integer manual;
+    /** 系统类型,风系统1,水系统0 */
+    @TableField(value = "system_type")
+    private Integer systemType;
+    /** 机电系统类型 */
+    private Set<String> mepSystemType;
+    /** 分区类型code集合 */
+    private Set<String> zoneTypes;
+    /** 是否参与计算 */
+    @TableField(value = "cal_flag")
+    private Boolean calFlag;
+
+
+
+}

+ 7 - 4
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/Dict.java

@@ -1,5 +1,8 @@
 package com.persagy.adm.server.custom.entity;
 
+import com.persagy.adm.server.custom.dto.ObjectInfoCollectDTO;
+import com.persagy.adm.server.custom.dto.ObjectTypeCollectDTO;
+import com.persagy.adm.server.custom.dto.RelationDefineCollectDTO;
 import com.persagy.adm.server.custom.entity.db.ObjectInfoCollect;
 import com.persagy.adm.server.custom.entity.db.ObjectTypeCollect;
 import lombok.Data;
@@ -15,12 +18,12 @@ public class Dict {
 
 	private List<Map<String, Object>> major;
 
-	private List<ObjectTypeCollect> system;
+	private List<ObjectTypeCollectDTO> system;
 
-	private List<ObjectTypeCollect> equipment;
+	private List<ObjectTypeCollectDTO> equipment;
 
-	private List<? extends Object> relation;
+	private List<RelationDefineCollectDTO> relation;
 
-	private List<ObjectInfoCollect> infos;
+	private List<ObjectInfoCollectDTO> infos;
 
 }

+ 1 - 1
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/ObjectInfoCollect.java

@@ -36,7 +36,7 @@ public class ObjectInfoCollect extends AuditableEntity {
     /** 交付实例范围 */
     private String instanceScope;
     /** 交付数据来源 */
-    private String dataSource;
+    private String dataFrom;
     /** 现场收集信息 */
     private String collectInfo;
     /** 备注 */

+ 1 - 1
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/entity/db/RelationDefineCollect.java

@@ -34,7 +34,7 @@ public class RelationDefineCollect extends AuditableEntity {
     /** 边类型编码  */
     private String relCode;
     /** 计算方式:0-手动计算 1-自动计算 */
-    private Integer automaticFlag;
+    private Boolean deliveryCalFlag;
     /** 管道用途 */
     private String pipeUse;
     /** 备注 */

+ 13 - 0
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/enums/DeliveryTypeEnum.java

@@ -0,0 +1,13 @@
+package com.persagy.adm.server.custom.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum DeliveryTypeEnum{
+    PROJECT(0,"项目交付"),SCENE(1,"现场交付");
+    int code;
+    String message;
+
+}

+ 19 - 7
adm-business/adm-server/src/main/java/com/persagy/adm/server/custom/service/impl/SyncAppImpl.java

@@ -17,8 +17,12 @@ import com.persagy.adm.server.custom.client.RwdClient;
 import com.persagy.adm.server.custom.common.AdmConst;
 import com.persagy.adm.server.custom.dao.*;
 import com.persagy.adm.server.custom.datatx.ObjectMapper4Tx;
+import com.persagy.adm.server.custom.dto.ObjectInfoCollectDTO;
+import com.persagy.adm.server.custom.dto.ObjectTypeCollectDTO;
+import com.persagy.adm.server.custom.dto.RelationDefineCollectDTO;
 import com.persagy.adm.server.custom.entity.*;
 import com.persagy.adm.server.custom.entity.db.*;
+import com.persagy.adm.server.custom.enums.DeliveryTypeEnum;
 import com.persagy.adm.server.custom.service.*;
 import com.persagy.adm.server.custom.util.DataExtrasUtil;
 import com.persagy.dmp.basic.model.QueryCriteria;
@@ -121,12 +125,14 @@ public class SyncAppImpl implements ISyncApp {
 
 		// 查询基于交付范围的系统和设备定义
 		QueryCriteria criteria = ServiceUtil.getQueryCriteria(objectMapper,AdmConst.OBJ_TYPE_SYSTEM, AdmConst.OBJ_TYPE_EQUIPMENT);
-		List<ObjectTypeCollect> typeList = ServiceUtil.queryAllPage(() -> rwdClient.queryDefineTypeCollect(groupCode, projectId, AdmConst.APP_ID, userId, criteria), criteria, new Pagination(500));
+		// 增加现场交付查询条件
+		criteria.getCriteria().put("deliveryType", DeliveryTypeEnum.SCENE.getCode());
+		List<ObjectTypeCollectDTO> typeList = ServiceUtil.queryAllPage(() -> rwdClient.queryDefineTypeCollect(groupCode, projectId, AdmConst.APP_ID, userId, criteria), criteria, new Pagination(500));
 
 
-		LinkedList<ObjectTypeCollect> sysList = new LinkedList<>();
-		LinkedList<ObjectTypeCollect> equipList = new LinkedList<>();
-		for(ObjectTypeCollect def : typeList){
+		LinkedList<ObjectTypeCollectDTO> sysList = new LinkedList<>();
+		LinkedList<ObjectTypeCollectDTO> equipList = new LinkedList<>();
+		for(ObjectTypeCollectDTO def : typeList){
 			if(def.getObjType().equals(AdmConst.OBJ_TYPE_SYSTEM))
 				sysList.add(def);
 			else if(def.getObjType().equals(AdmConst.OBJ_TYPE_EQUIPMENT))
@@ -140,15 +146,21 @@ public class SyncAppImpl implements ISyncApp {
 
 //		查询基于交付范围的关系定义
 		if(includeRel) {
-			List<RelationDefineCollect> relList = ServiceUtil.call(() -> rwdClient.queryDefineRelCollect(groupCode, projectId, AdmConst.APP_ID, userId, new QueryCriteria()));
+			QueryCriteria queryCriteria = new QueryCriteria();
+			ObjectNode objectNode = objectMapper.createObjectNode();
+			objectNode.put("deliveryType",DeliveryTypeEnum.SCENE.getCode());
+			queryCriteria.setCriteria(objectNode);
+			List<RelationDefineCollectDTO> relList = ServiceUtil.call(() -> rwdClient.queryDefineRelCollect(groupCode, projectId, AdmConst.APP_ID, userId, queryCriteria));
 			data.setRelation(relList);
 		}
 
 		//查询基于交付范围的信息点定义
 		if(includeInfos) {
 			QueryCriteria qc = new QueryCriteria();
-			qc.setCriteria(objectMapper.createObjectNode());
-			List<ObjectInfoCollect> funcList = ServiceUtil.call(() -> rwdClient.queryDefineInfoCollect(groupCode, projectId, AdmConst.APP_ID, userId, qc));
+			ObjectNode objectNode = objectMapper.createObjectNode();
+			objectNode.put("deliveryType",DeliveryTypeEnum.SCENE.getCode());
+			qc.setCriteria(objectNode);
+			List<ObjectInfoCollectDTO> funcList = ServiceUtil.call(() -> rwdClient.queryDefineInfoCollect(groupCode, projectId, AdmConst.APP_ID, userId, qc));
 			data.setInfos(funcList);
 		}
 

+ 72 - 26
adm-business/adm-server/src/main/resources/db/init/data.sql

@@ -1,5 +1,4 @@
 SHOW TABLES;
-
 truncate table `adm_define_problem_type`;
 #墙
 INSERT INTO `adm_define_problem_type`(`id`, `obj_type_code`, `obj_type_name`, `problem_type_code`, `problem_type_name`) VALUES (UUID(), 'CFCSWL', '墙', 'CFCSWL_LESS', '墙体缺少');
@@ -43,31 +42,43 @@ INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`,
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'wallHeight', '墙体高度', 'CFCSWL_LESS', 'mm', 'DOUBLE', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'materialType', '材质', 'CFCSWL_LESS', NULL, 'ENUM', 0, '[{"code": "1", "name": "钢筋混凝土结构"}, {"code": "2", "name": "砌体结构"}, {"code": "99", "name": "其他"}]');
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'wallThick', '墙厚', 'CFCSWL_LESS', 'mm', 'DOUBLE', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSWL_LESS', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSWL_LESS', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSWL_LESS', NULL, 'STRING', 0, NULL);
+
 
 #墙体多余
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '墙体路由', 'CFCSWL_MORE', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSWL_MORE', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSWL_MORE', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSWL_MORE', NULL, 'STRING', 0, NULL);
+
 
 #墙体材质错误
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '墙体路由', 'CFCSWL_MATERIAL_ERROR', NULL, 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'materialType', '材质', 'CFCSWL_MATERIAL_ERROR', NULL, 'ENUM', 0, '[{"code": "1", "name": "钢筋混凝土结构"}, {"code": "2", "name": "砌体结构"}, {"code": "99", "name": "其他"}]');
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'wallThick', '墙厚', 'CFCSWL_MATERIAL_ERROR', 'mm', 'DOUBLE', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSWL_MATERIAL_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSWL_MATERIAL_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSWL_MATERIAL_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #楼板缺少
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '板轮廓', 'CFCSFL_LESS', NULL, 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'height', '板高度(距本层标高的相对高度)', 'CFCSFL_LESS', 'mm', 'DOUBLE', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSFL_LESS', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSFL_LESS', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSFL_LESS', NULL, 'STRING', 0, NULL);
+
 
 #板洞缺少
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '洞口轮廓', 'CFCSFL_HOLE_LESS', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSFL_HOLE_LESS', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSFL_HOLE_LESS', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSFL_HOLE_LESS', NULL, 'STRING', 0, NULL);
+
 
 #楼板标高错误
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '板轮廓', 'CFCSFL_ELEVATION_ERROR', NULL, 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'height', '正确的板标高(距本层标高的相对高度)', 'CFCSFL_ELEVATION_ERROR', 'mm', 'DOUBLE', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSFL_ELEVATION_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSFL_ELEVATION_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSFL_ELEVATION_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #柱缺少
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '标记缺少柱点', 'CFCSCL_LESS', NULL, 'STRING', 0, NULL);
@@ -76,11 +87,15 @@ INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`,
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'rectangleCrossWidth', '宽', 'CFCSCL_LESS', 'mm', 'DOUBLE', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'circularCrossDiameter', '直径', 'CFCSCL_LESS', 'mm', 'DOUBLE', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'columnLength', '柱高度', 'CFCSCL_LESS', 'mm', 'DOUBLE', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_LESS', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_LESS', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSCL_LESS', NULL, 'STRING', 0, NULL);
+
 
 #柱多余
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记多余柱点', 'CFCSCL_MORE', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_MORE', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_MORE', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSCL_MORE', NULL, 'STRING', 0, NULL);
+
 
 #柱截面形状错误
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记错误柱子', 'CFCSCL_SECTION_SHAPE_ERROR', NULL, 'STRING', 0, NULL);
@@ -88,19 +103,25 @@ INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`,
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'rectangleCrossLength', '长', 'CFCSCL_SECTION_SHAPE_ERROR', 'mm', 'DOUBLE', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'rectangleCrossWidth', '宽', 'CFCSCL_SECTION_SHAPE_ERROR', 'mm', 'DOUBLE', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'circularCrossDiameter', '直径', 'CFCSCL_SECTION_SHAPE_ERROR', 'mm', 'DOUBLE', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_SECTION_SHAPE_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_SECTION_SHAPE_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSCL_SECTION_SHAPE_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #柱尺寸错误
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记错误柱子', 'CFCSCL_SIZE_ERROR', NULL, 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'rectangleCrossLength', '长', 'CFCSCL_SIZE_ERROR', 'mm', 'DOUBLE', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'rectangleCrossWidth', '宽', 'CFCSCL_SIZE_ERROR', 'mm', 'DOUBLE', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'circularCrossDiameter', '直径', 'CFCSCL_SIZE_ERROR', 'mm', 'DOUBLE', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_SIZE_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFCSCL_SIZE_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFCSCL_SIZE_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #重新绘制物业空间
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '标记物业空间', 'GeneralZone_OUTLINE_ERROR', NULL, 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'RoomLocalName', '正确的空间名称', 'GeneralZone_OUTLINE_ERROR', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'GeneralZone_OUTLINE_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'GeneralZone_OUTLINE_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'GeneralZone_OUTLINE_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #门缺少
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '标记缺少门位置', 'CFBEDR_LESS', NULL, 'STRING', 0, NULL);
@@ -110,11 +131,15 @@ INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`,
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'doorLeafType', '门扇类型', 'CFBEDR_LESS', NULL, 'ENUM', 0, '[{"code": "1", "name": "单开"},{"code": "2", "name": "双开"},{"code": "99", "name": "其他"}]');
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'doorWidth ', '宽', 'CFBEDR_LESS', 'mm', 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'doorHeight ', '高', 'CFBEDR_LESS', 'mm', 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_LESS', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_LESS', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEDR_LESS', NULL, 'STRING', 0, NULL);
+
 
 #门多余
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记多余门位置', 'CFBEDR_MORE', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_MORE', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_MORE', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEDR_MORE', NULL, 'STRING', 0, NULL);
+
 
 #门属性错误
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记错误门', 'CFBEDR_PROPERTY_ERROR', NULL, 'STRING', 0, NULL);
@@ -123,23 +148,31 @@ INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`,
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'openType', '开启方式', 'CFBEDR_PROPERTY_ERROR', NULL, 'ENUM', 0, '[{"code": "1", "name": "卷帘门"},{"code": "2", "name": "平开门"}, {"code": "3", "name": "弹簧门"},{"code": "4", "name": "折叠门"},{"code": "5", "name": "推拉门"},{"code": "6", "name": "旋转门"},{"code": "99", "name": "其他"}]');
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'doorWidth ', '宽', 'CFBEDR_PROPERTY_ERROR', 'mm', 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'doorHeight ', '高', 'CFBEDR_PROPERTY_ERROR', 'mm', 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_PROPERTY_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_PROPERTY_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEDR_PROPERTY_ERROR', NULL, 'STRING', 0, NULL);
+
 
 # 门位置错误
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDirection', '移动方向', 'CFBEDR_POSITION_ERROR', NULL, 'ENUM', 0, '[{"code": "1", "name": "左"},{"code": "2", "name": "右"}, {"code": "3", "name": "上"},{"code": "4", "name": "下"}]');
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDistance ', '移动距离', 'CFBEDR_POSITION_ERROR', 'mm', 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_POSITION_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDirection', '移动方向', 'CFBEDR_POSITION_ERROR', NULL, 'POSITION', 0, '[{"code": "1", "name": "左"},{"code": "2", "name": "右"}, {"code": "3", "name": "上"},{"code": "4", "name": "下"}]');
+-- INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDistance ', '移动距离', 'CFBEDR_POSITION_ERROR', 'mm', 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEDR_POSITION_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEDR_POSITION_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #窗缺少
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '标记缺少窗位置', 'CFBEWN_LESS', NULL, 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'equipmentType', '正确的设备类', 'CFBEWN_LESS', NULL, 'ENUM', 0, '[{"code": "1", "name": "窗"},{"code": "2", "name": "防火窗"}]');
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'windowWidth', '宽', 'CFBEWN_LESS', 'mm', 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'windowHeight ', '高', 'CFBEWN_LESS', 'mm', 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_LESS', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_LESS', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEWN_LESS', NULL, 'STRING', 0, NULL);
+
 
 #窗多余
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记多余窗位置', 'CFBEWN_MORE', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_MORE', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_MORE', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEWN_MORE', NULL, 'STRING', 0, NULL);
+
 
 #窗属性错误
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记错误窗', 'CFBEWN_PROPERTY_ERROR', NULL, 'STRING', 0, NULL);
@@ -147,17 +180,30 @@ INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`,
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'windowType', '正确的窗样式', 'CFBEWN_PROPERTY_ERROR', NULL, 'ENUM', 0, '[{"code": "0", "name": "保持"},{"code": "1", "name": "平开(推拉)窗"},{"code": "2", "name": "飘窗"},{"code": "3", "name": "百叶窗"}]');
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'windowWidth', '宽', 'CFBEWN_PROPERTY_ERROR', 'mm', 'STRING', 0, NULL);
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'windowHeight ', '高', 'CFBEWN_PROPERTY_ERROR', 'mm', 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_PROPERTY_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_PROPERTY_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEWN_PROPERTY_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #窗位置错误
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDirection', '移动方向', 'CFBEWN_POSITION_ERROR', NULL, 'ENUM', 0, '[{"code": "1", "name": "左"},{"code": "2", "name": "右"}, {"code": "3", "name": "上"},{"code": "4", "name": "下"}]');
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDistance ', '移动距离', 'CFBEWN_POSITION_ERROR', 'mm', 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_POSITION_ERROR', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDirection', '移动方向', 'CFBEWN_POSITION_ERROR', NULL, 'POSITION', 0, '[{"code": "1", "name": "左"},{"code": "2", "name": "右"}, {"code": "3", "name": "上"},{"code": "4", "name": "下"}]');
+-- INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'moveDistance ', '移动距离', 'CFBEWN_POSITION_ERROR', 'mm', 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFBEWN_POSITION_ERROR', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFBEWN_POSITION_ERROR', NULL, 'STRING', 0, NULL);
+
 
 #停车位缺少
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'coordinate', '标记车位位置', 'CFPKPS_LESS', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFPKPS_LESS', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFPKPS_LESS', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFPKPS_LESS', NULL, 'STRING', 0, NULL);
+
 
 #停车位多余
 INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'objectId', '标记车位', 'CFPKPS_MORE', NULL, 'STRING', 0, NULL);
-INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFPKPS_MORE', NULL, 'STRING', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'senceImg', '拍摄照片', 'CFPKPS_MORE', NULL, 'PHOTO', 0, NULL);
+INSERT INTO `adm_define_problem_info`(`id`, `code`, `name`, `problem_type_code`, `unit`, `data_type`, `is_multiple`, `data_source`) VALUES (UUID(), 'remark', '备注', 'CFPKPS_MORE', NULL, 'STRING', 0, NULL);
+
+
+
+
+
+