zhaoyk 3 years ago
parent
commit
b997b9ba7b

+ 4 - 4
pom.xml

@@ -56,10 +56,10 @@
 
     <dependencies>
         <!-- 配置中心(包含注册中心) -->
-        <dependency>
+        <!--<dependency>
             <groupId>com.persagy</groupId>
             <artifactId>integrated-config-client</artifactId>
-        </dependency>
+        </dependency>-->
         <dependency>
             <groupId>com.persagy</groupId>
             <artifactId>dmp-amqp-starter</artifactId>
@@ -106,7 +106,7 @@
         </dependency>
     </dependencies>
 
-    <build>
+    <!--<build>
         <plugins>
             <plugin>
                 <groupId>org.mybatis.generator</groupId>
@@ -139,6 +139,6 @@
                 </dependencies>
             </plugin>
         </plugins>
-    </build>
+    </build>-->
 
 </project>

+ 1 - 1
src/main/java/com/persagy/bdtp/adm/client/DicClient.java

@@ -12,7 +12,7 @@ import java.util.List;
 import java.util.Map;
 
 @FeignClient(name = "dmp-dic", configuration = DigitalFeignConfig.class,
-		url = "${persagy.bdtp.rwd.service:}")
+		url = "${persagy.bdtp.dic.service:}")
 public interface DicClient {
 
 	/**

+ 10 - 0
src/main/java/com/persagy/bdtp/adm/dao/AdmPipeMapper.java

@@ -0,0 +1,10 @@
+package com.persagy.bdtp.adm.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.bdtp.adm.entity.AdmPipe;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AdmPipeMapper extends BaseMapper<AdmPipe> {
+
+}

+ 98 - 0
src/main/java/com/persagy/bdtp/adm/entity/AdmPipe.java

@@ -0,0 +1,98 @@
+package com.persagy.bdtp.adm.entity;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.common.helper.SpringHelper;
+import lombok.Data;
+
+import java.io.IOException;
+import java.util.List;
+
+@Data
+@TableName(value = "adm_pipe",autoResultMap = true)
+public class AdmPipe extends BaseAdmDataEntity {
+
+    private String objFrom;
+
+    private String typeFrom;
+
+    private String objTo;
+
+    private String typeTo;
+
+    private Integer direction;
+
+    private String pipeType;
+
+    private String pipeSubType;
+
+    @TableField(
+            typeHandler = JacksonTypeHandler.class
+    )
+    private List<Object> route;
+
+    @TableField(
+            typeHandler = JacksonTypeHandler.class
+    )
+    private ObjectNode infos;
+
+    /**  数模同步状态:0未同步, 1已同步 */
+    private Integer d2mState;
+
+    /** 交付BDTP状态:1已交付,0待交付 */
+    private Integer deliveryState;
+
+    private String strRoute;
+
+    private String strInfos;
+
+    @Override
+    public void serializeJsonProp() {
+        if(route != null) {
+            ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+            try {
+                strRoute = objectMapper.writeValueAsString(route);
+            } catch (JsonProcessingException e) {
+
+            }
+            route = null;
+        }
+        if(infos != null) {
+            ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+            try {
+                setStrInfos(objectMapper.writeValueAsString(infos));
+            } catch (JsonProcessingException e) {
+
+            }
+            setInfos(null);
+        }
+    }
+
+    @Override
+    public void deserializeJsonProp() {
+        if(StrUtil.isNotBlank(strRoute)) {
+            ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+            try {
+                route = objectMapper.readValue(strRoute, List.class);
+            } catch (IOException e) {
+
+            }
+            strRoute = null;
+        }
+        if(StrUtil.isNotBlank(strInfos)) {
+            ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+            try {
+                setInfos(objectMapper.readValue(strInfos, ObjectNode.class));
+            } catch (IOException e) {
+
+            }
+            setStrInfos(null);
+        }
+    }
+
+}

+ 4 - 0
src/main/java/com/persagy/bdtp/adm/entity/AdmRelsConfig.java

@@ -17,8 +17,12 @@ public class AdmRelsConfig implements IAdmEntity {
 
     private String graphCode;
 
+    private String graphName;
+
     private String relCode;
 
+    private String relName;
+
     private String objTypeTo;
 
     private String classCodeTo;

+ 2 - 0
src/main/java/com/persagy/bdtp/adm/entity/SyncData.java

@@ -13,6 +13,8 @@ public class SyncData {
 
 	private List<AdmRelation> relations;
 
+	private List<AdmPipe> pipes;
+
 	private List<AdmJobSpace> jobSpace;
 
 	private List<AdmProblemArch> problemArch;

+ 2 - 0
src/main/java/com/persagy/bdtp/adm/entity/UploadRtn.java

@@ -11,6 +11,8 @@ public class UploadRtn {
 
 	private List<String> expiredRelationIds;
 
+	private List<String> expiredPipeIds;
+
 	private List<String> expiredJobSpaceIds;
 
 	private List<String> expiredProblemArchIds;

+ 2 - 2
src/main/java/com/persagy/bdtp/adm/entity/oldadm/OBase.java

@@ -20,8 +20,8 @@ abstract public class OBase {
 
 	private Map<String, Object> infos;
 
-	private Date createTime;
+	private String createTime;
 
-	private Date lastUpdate;
+	private String lastUpdate;
 
 }

+ 61 - 13
src/main/java/com/persagy/bdtp/adm/service/impl/SyncAppImpl.java

@@ -54,6 +54,9 @@ public class SyncAppImpl implements ISyncApp {
 	private AdmRelationMapper relationMapper;
 
 	@Autowired
+	private AdmPipeMapper pipeMapper;
+
+	@Autowired
 	private AdmJobSpaceMapper jobSpaceMapper;
 
 	@Autowired
@@ -215,6 +218,7 @@ public class SyncAppImpl implements ISyncApp {
 	public SyncData downloadBuildingData(String projectId, String buildingId, String uploadFlag, String lastDownloadTime) {
 		List<AdmObject> bdData = admObjMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmObject>(), projectId, buildingId, uploadFlag, lastDownloadTime));
 		List<AdmRelation> bdRel = relationMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmRelation>(), projectId, buildingId, uploadFlag, lastDownloadTime));
+		List<AdmPipe> pipes = pipeMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmPipe>(), projectId, buildingId, uploadFlag, lastDownloadTime));
 
 		//任务相关数据查询
 		List<AdmJobSpace> jobSpace = jobSpaceMapper.selectList(buildDownloadQueryWrapper(new QueryWrapper<AdmJobSpace>(), projectId, buildingId, uploadFlag, lastDownloadTime));
@@ -228,6 +232,7 @@ public class SyncAppImpl implements ISyncApp {
 
 		data.setObjects(serializeJsonProp(bdData));
 		data.setRelations(bdRel);
+		data.setPipes(serializeJsonProp(pipes));
 
 		data.setJobSpace(serializeJsonProp(jobSpace));
 		data.setProblemArch(serializeJsonProp(problemArch));
@@ -265,7 +270,7 @@ public class SyncAppImpl implements ISyncApp {
 
 		if (CollUtil.isNotEmpty(uploadData.getObjects())) {
 			List<AdmObject> dbObjs = admObjMapper.selectList(new QueryWrapper<AdmObject>().eq("building_id", uploadData.getBuildingId()).eq("valid", ValidEnum.TRUE.getType()));
-			List<AdmObject> expired = uploadBdtpData(uploadData.getObjects(), dbObjs, uploadFlag, timestamp, admObjMapper, "object");
+			List<AdmObject> expired = uploadBdtpData(deserializeJsonProp(uploadData.getObjects()), dbObjs, uploadFlag, timestamp, admObjMapper, "object");
 			rtn.setExpiredObjectIds(buildExpiredIds(expired));
 		}
 		if (CollUtil.isNotEmpty(uploadData.getRelations())) {
@@ -275,29 +280,35 @@ public class SyncAppImpl implements ISyncApp {
 		}
 
 		String timestampStr = timestamp.toString();
+		if (CollUtil.isNotEmpty(uploadData.getPipes())) {
+			List<AdmPipe> dbObjs = pipeMapper.selectList(new QueryWrapper<AdmPipe>().eq("building_id", uploadData.getBuildingId()).eq("valid", ValidEnum.TRUE.getType()));
+			List<AdmPipe> expired = uploadAdmData(deserializeJsonProp(uploadData.getPipes()), dbObjs, uploadFlag, timestampStr, pipeMapper, "pipe");
+			rtn.setExpiredPipeIds(buildExpiredIds(expired));
+		}
+
 		if (CollUtil.isNotEmpty(uploadData.getJobSpace())) {
 			List<AdmJobSpace> dbObjs = jobSpaceMapper.selectList(new QueryWrapper<AdmJobSpace>().eq("building_id", uploadData.getBuildingId()).eq("valid", ValidEnum.TRUE.getType()));
-			List<AdmJobSpace> expired = uploadAdmData(uploadData.getJobSpace(), dbObjs, uploadFlag, timestampStr, jobSpaceMapper);
+			List<AdmJobSpace> expired = uploadAdmData(deserializeJsonProp(uploadData.getJobSpace()), dbObjs, uploadFlag, timestampStr, jobSpaceMapper, null);
 			rtn.setExpiredJobSpaceIds(buildExpiredIds(expired));
 		}
 		if (CollUtil.isNotEmpty(uploadData.getProblemArch())) {
 			List<AdmProblemArch> dbObjs = problemArchMapper.selectList(new QueryWrapper<AdmProblemArch>().eq("building_id", uploadData.getBuildingId()).eq("valid", ValidEnum.TRUE.getType()));
-			List<AdmProblemArch> expired = uploadAdmData(uploadData.getProblemArch(), dbObjs, uploadFlag, timestampStr, problemArchMapper);
+			List<AdmProblemArch> expired = uploadAdmData(deserializeJsonProp(uploadData.getProblemArch()), dbObjs, uploadFlag, timestampStr, problemArchMapper, null);
 			rtn.setExpiredProblemArchIds(buildExpiredIds(expired));
 		}
 		if (CollUtil.isNotEmpty(uploadData.getProblemEquip())) {
 			List<AdmProblemEquip> dbObjs = problemEquipMapper.selectList(new QueryWrapper<AdmProblemEquip>().eq("building_id", uploadData.getBuildingId()).eq("valid", ValidEnum.TRUE.getType()));
-			List<AdmProblemEquip> expired = uploadAdmData(uploadData.getProblemEquip(), dbObjs, uploadFlag, timestampStr, problemEquipMapper);
+			List<AdmProblemEquip> expired = uploadAdmData(uploadData.getProblemEquip(), dbObjs, uploadFlag, timestampStr, problemEquipMapper, null);
 			rtn.setExpiredProblemEquipIds(buildExpiredIds(expired));
 		}
 		if (CollUtil.isNotEmpty(uploadData.getFile())) {
 			List<AdmFile> dbObjs = fileMapper.selectList(new QueryWrapper<AdmFile>().eq("building_id", uploadData.getBuildingId()).eq("valid", ValidEnum.TRUE.getType()));
-			List<AdmFile> expired = uploadAdmData(uploadData.getFile(), dbObjs, uploadFlag, timestampStr, fileMapper);
+			List<AdmFile> expired = uploadAdmData(uploadData.getFile(), dbObjs, uploadFlag, timestampStr, fileMapper, null);
 			rtn.setExpiredFileIds(buildExpiredIds(expired));
 		}
 		if (CollUtil.isNotEmpty(uploadData.getQrCode())) {
 			List<AdmQrCode> dbObjs = qrCodeMapper.selectList(new QueryWrapper<AdmQrCode>().eq("building_id", uploadData.getBuildingId()).eq("valid", ValidEnum.TRUE.getType()));
-			List<AdmQrCode> expired = uploadAdmData(uploadData.getQrCode(), dbObjs, uploadFlag, timestampStr, qrCodeMapper);
+			List<AdmQrCode> expired = uploadAdmData(deserializeJsonProp(uploadData.getQrCode()), dbObjs, uploadFlag, timestampStr, qrCodeMapper, null);
 			rtn.setExpiredQrCodeIds(buildExpiredIds(expired));
 		}
 
@@ -356,12 +367,7 @@ public class SyncAppImpl implements ISyncApp {
 			}
 		}
 
-		D2mMessage message = new D2mMessage();
-		message.setItemType(objectType);
-		message.setAddItems(msgAdd);
-		message.setModifyItems(msgModify);
-		message.setRemoveItems(msgRemove);
-		syncModel.sendMessageToModel(message);
+		sendD2mMessage(objectType, msgAdd, msgModify, msgRemove);
 
 		return expired;
 	}
@@ -374,14 +380,24 @@ public class SyncAppImpl implements ISyncApp {
 		obj.setClientDevice(dbObj.getClientDevice());
 	}
 
-	private <T extends BaseAdmDataEntity> List<T> uploadAdmData(List<T> objs, List<T> dbObjs, String uploadFlag, String timestamp, BaseMapper<T> mapper){
+	private <T extends BaseAdmDataEntity> List<T> uploadAdmData(List<T> objs, List<T> dbObjs, String uploadFlag, String timestamp, BaseMapper<T> mapper, String d2mType){
 		List<T> expired = new ArrayList<>();
 		HashMap<String, T> dbMap = new HashMap<>(dbObjs.size());
 		for(T dbObj : dbObjs) {
 			dbMap.put(dbObj.getId(), dbObj);
 		}
 
+		List<T> msgAdd = new ArrayList<>();
+		List<T> msgModify = new ArrayList<>();
+		List<T> msgRemove = new ArrayList<>();
 		for (T obj : objs) {
+			if(d2mType != null) {
+				if(obj instanceof AdmPipe) {
+					((AdmPipe) obj).setD2mState(ValidEnum.FALSE.getType());
+					((AdmPipe) obj).setDeliveryState(ValidEnum.FALSE.getType());
+				}
+			}
+
 			T dbObj = dbMap.get(obj.getId());
 			if (dbObj == null) {
 				if(obj.getValid().intValue() == ValidEnum.FALSE.getType())
@@ -390,7 +406,11 @@ public class SyncAppImpl implements ISyncApp {
 				obj.setCreationTime(timestamp);
 				obj.setCreator(AdmConst.CREATOR_APP);
 				obj.setUploadFlag(uploadFlag);
+
 				mapper.insert(obj);
+
+				if(d2mType != null)
+					msgAdd.add(obj);
 			} else {
 				String dbTs;
 				String ts;
@@ -408,13 +428,34 @@ public class SyncAppImpl implements ISyncApp {
 					obj.setModifiedTime(timestamp);
 					obj.setModifier(AdmConst.CREATOR_APP);
 					obj.setUploadFlag(uploadFlag);
+
 					mapper.updateById(obj);
+
+					if(d2mType != null) {
+						if(obj.getValid().intValue() == ValidEnum.FALSE.getType())
+							msgRemove.add(obj);
+						else
+							msgModify.add(obj);
+					}
 				}
 			}
 		}
+
+		if(d2mType != null)
+			sendD2mMessage(d2mType, msgAdd, msgModify, msgRemove);
+
 		return expired;
 	}
 
+	private void sendD2mMessage(String objectType, List<?> msgAdd, List<?> msgModify, List<?> msgRemove){
+		D2mMessage message = new D2mMessage();
+		message.setItemType(objectType);
+		message.setAddItems(msgAdd);
+		message.setModifyItems(msgModify);
+		message.setRemoveItems(msgRemove);
+		syncModel.sendMessageToModel(message);
+	}
+
 	private List<String> buildExpiredIds(List<? extends IAdmEntity> expired){
 		if(expired.size() > 0) {
 			List<String> ids = new ArrayList<>();
@@ -433,4 +474,11 @@ public class SyncAppImpl implements ISyncApp {
 		return list;
 	}
 
+	private <T extends IAdmEntity> List<T> deserializeJsonProp(List<T> list){
+		for(IAdmEntity entity : list) {
+			entity.deserializeJsonProp();
+		}
+		return list;
+	}
+
 }

+ 8 - 4
src/main/java/com/persagy/bdtp/adm/service/impl/SyncOldAdmImpl.java

@@ -116,9 +116,11 @@ public class SyncOldAdmImpl implements ISyncOldAdm {
 
 		for(AdmObject obj : objs) {
 			AdmObject dbItem = dbMap.remove(getFixedIdForSync(obj));
-			if(dbItem == null)
+			if(dbItem == null) {
+				obj.setD2mState(ValidEnum.TRUE.getType());
+				obj.setDeliveryState(ValidEnum.FALSE.getType());
 				operations[0].add(obj); //add
-			else {
+			} else {
 				AdmObject updateItem = mergeObj(obj, dbItem, objMark);
 				if(updateItem != null)
 					operations[1].add(updateItem); //modify
@@ -166,6 +168,8 @@ public class SyncOldAdmImpl implements ISyncOldAdm {
 		dbItem.setModifiedTime(new PsDateTime(System.currentTimeMillis()));
 		dbItem.setModifier(AdmConst.CREATOR_SYNC);
 		dbItem.setUploadFlag(null);
+		dbItem.setD2mState(ValidEnum.TRUE.getType());
+		dbItem.setDeliveryState(ValidEnum.FALSE.getType());
 
 		return dbItem;
 	}
@@ -218,9 +222,9 @@ public class SyncOldAdmImpl implements ISyncOldAdm {
 			obj.setInfos(mapToNode(base.getInfos()));
 
 		if(base.getCreateTime() != null)
-			obj.setCreationTime(new PsDateTime(base.getCreateTime()));
+			obj.setCreationTime(new PsDateTime(DateUtil.parse(base.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
 		if(base.getLastUpdate() != null)
-			obj.setModifiedTime(new PsDateTime(base.getLastUpdate()));
+			obj.setModifiedTime(new PsDateTime(DateUtil.parse(base.getLastUpdate(), "yyyy-MM-dd HH:mm:ss")));
 
 		obj.setValid(ValidEnum.TRUE.getType());
 

+ 19 - 4
src/main/resources/bootstrap.yml

@@ -1,9 +1,11 @@
 server:
-  port: 8876
+  port: 8877
 spring:
   application:
     # 应用名称
     name: adm
+  main:
+    allow-bean-definition-overriding: true
   datasource:
     dynamic:
       datasource:
@@ -12,6 +14,15 @@ spring:
           username: adm
           password: adm
           url: jdbc:mysql://192.168.0.11/adm?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT
+#          username: yushudev
+#          password: yushu@2021
+#          url: jdbc:mysql://82.157.28.170:3306/adm_poc?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT
+  rabbitmq:
+    host: 192.168.100.93
+    port: 9936
+    username: pbsage
+    password: pbsage123
+    virtualHost: /test
 persagy:
 #  common:
 #    file:
@@ -21,6 +32,10 @@ persagy:
 #      secretKey: 12345678
   adm:
     oldPlatformUrl: http://39.102.40.239
-# typeHandler扫描
-mybatis-plus:
-  typeHandlersPackage: com.persagy.**.typehandler
+  bdtp:
+    rwd:
+#      service: http://82.157.159.41/dmp-rwd
+      service: http://develop.persagy.com/dmp-rwd
+    dic:
+#      service: http://82.157.159.41/dmp-dic
+      service: http://develop.persagy.com/dmp-dic

+ 2 - 2
src/test/java/com/persagy/bdtp/adm/test/data/PipeCfgs.java

@@ -68,9 +68,9 @@ public class PipeCfgs {
 
     private String getPipeClassCode(String name){
         if("液体管道".equals(name))
-            return "LAPL";
+            return "OTLAPL";
         if("气体管道".equals(name))
-            return "AAPL";
+            return "OTAAPL";
         return name;
     }
 

+ 7 - 2
src/test/java/com/persagy/bdtp/adm/test/data/RelCfgs.java

@@ -23,6 +23,7 @@ public class RelCfgs {
     private AdmRelsConfig cfg;
     private String classCodeFrom;
     private String graphCode;
+    private String graphName;
     private String major;
     private List<Map> graphDef;
     private List<Map> relDef;
@@ -68,15 +69,19 @@ public class RelCfgs {
     private void readLine(int preS, String[] arr) {
         if (preS <= 3)
             classCodeFrom = arr[3 - preS];
-        if (preS <= 4)
-            graphCode = findGraphCode(arr[4 - preS]);
+        if (preS <= 4) {
+            graphName = arr[4 - preS];
+            graphCode = findGraphCode(graphName);
+        }
 
         cfg = new AdmRelsConfig();
         cfg.setId(IdUtil.simpleUUID());
         cfg.setObjTypeFrom("equipment");
         cfg.setClassCodeFrom(classCodeFrom);
         cfg.setGraphCode(graphCode);
+        cfg.setGraphName(graphName);
         cfg.setRelCode(findRelCode(arr[5 - preS], graphCode));
+        cfg.setRelName(arr[5 - preS]);
         if(arr.length >= 8 - preS)
             cfg.setClassCodeTo(arr[7 - preS]);
         if(cfg.getClassCodeTo() != null){