Browse Source

1029 方案修改和完善

zhaoyk 3 years ago
parent
commit
badd17368f

+ 9 - 4
src/main/java/com/persagy/bdtp/adm/config/AdmCommonConfig.java

@@ -1,16 +1,21 @@
 package com.persagy.bdtp.adm.config;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.persagy.bdtp.adm.datatx.ObjectMapper4Tx;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration
 public class AdmCommonConfig {
 
-	@Bean(name = "mapper4Tx")
-	public ObjectMapper4Tx getObjectMapper4Tx(){
-		return new ObjectMapper4Tx(new ObjectMapper());
+	/**
+	 *	ObjectMapper默认不输出null值字段
+	 */
+	@Bean(name = "objectMapper")
+	public ObjectMapper getObjectMapper(){
+		ObjectMapper mapper = new ObjectMapper();
+		mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+		return mapper;
 	}
 
 }

+ 7 - 2
src/main/java/com/persagy/bdtp/adm/controller/AppController.java

@@ -3,6 +3,7 @@ package com.persagy.bdtp.adm.controller;
 import com.persagy.bdtp.adm.client.OldAdmClient;
 import com.persagy.bdtp.adm.common.AdmRequest;
 import com.persagy.bdtp.adm.common.AdmResult;
+import com.persagy.bdtp.adm.datatx.DataTxHandler;
 import com.persagy.bdtp.adm.entity.SyncData;
 import com.persagy.bdtp.adm.entity.UploadRtn;
 import com.persagy.bdtp.adm.service.ISyncApp;
@@ -28,6 +29,9 @@ public class AppController {
 	@Autowired
 	private ISyncApp syncApp;
 
+	@Autowired
+	private DataTxHandler dataTxHandler;
+
 	@RequestMapping("/frame")
 	public AdmResult<Map<String, Object>> frame(@RequestBody AdmRequest req){
 //		ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
@@ -108,8 +112,9 @@ public class AppController {
 	}
 
 	@RequestMapping("/upload")
-	public AdmResult<UploadRtn> upload(@RequestBody AdmRequest req){
-		return AdmResult.success(syncApp.uploadData(req.getUploadData(), req.getProjectId(), req.getUploadFlag()));
+	public AdmResult<UploadRtn> upload(HttpServletRequest request){
+		AdmRequest admRequest = dataTxHandler.handleRequest(request);
+		return AdmResult.success(syncApp.uploadData(admRequest.getUploadData(), admRequest.getProjectId(), admRequest.getUploadFlag()));
 	}
 
 	@PostMapping("/uploadFile")

+ 53 - 0
src/main/java/com/persagy/bdtp/adm/datatx/DataTxHandler.java

@@ -0,0 +1,53 @@
+package com.persagy.bdtp.adm.datatx;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.persagy.bdtp.adm.common.AdmRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.GZIPInputStream;
+
+/**
+ * 数据传输帮助类
+ */
+@Component
+public class DataTxHandler {
+
+	private final ObjectMapper objectMapper;
+
+	@Autowired
+	public DataTxHandler(ObjectMapper objectMapper) {
+		this.objectMapper = objectMapper;
+	}
+
+	/**
+	 * 处理上传请求的gzip压缩数据
+	 */
+	public AdmRequest handleRequest(HttpServletRequest req) {
+		try {
+			InputStream in = req.getInputStream();
+			String contentEncoding = req.getHeader("Content-Encoding");
+			if (contentEncoding != null && contentEncoding.indexOf("gzip") >= 0) {
+				GZIPInputStream gzipInputStream = new GZIPInputStream(in);
+				in = gzipInputStream;
+			}
+
+			ByteArrayOutputStream out = new ByteArrayOutputStream();
+			byte[] buffer = new byte[1024];
+			int n;
+			while ((n = in.read(buffer)) >= 0) {
+				out.write(buffer, 0, n);
+			}
+
+			String json = new String(out.toByteArray(), "UTF-8");
+			return objectMapper.readValue(json, AdmRequest.class);
+		} catch (IOException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+}

+ 5 - 1
src/main/java/com/persagy/bdtp/adm/datatx/ObjectMapper4Tx.java

@@ -4,14 +4,18 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.persagy.bdtp.adm.entity.AdmObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 /**
  * 针对数据传输的ObjectMapper,过滤字段
  */
+@Component
 public class ObjectMapper4Tx {
 
-	private ObjectMapper mapper;
+	private final ObjectMapper mapper;
 
+	@Autowired
 	public ObjectMapper4Tx(ObjectMapper mapper) {
 		this.mapper = mapper;
 		configMapper();

+ 3 - 0
src/main/java/com/persagy/bdtp/adm/entity/AdmConfig.java

@@ -26,6 +26,9 @@ public class AdmConfig extends BaseAdmEntity {
 	)
 	private JsonNode data;
 
+	@TableField(
+			exist = false
+	)
 	private String strData;
 
 	@Override

+ 3 - 0
src/main/java/com/persagy/bdtp/adm/entity/AdmInfosConfig.java

@@ -33,6 +33,9 @@ public class AdmInfosConfig extends BaseAdmEntity {
 
     private String flag;
 
+    @TableField(
+            exist = false
+    )
     private String strInfos;
 
     @Override

+ 3 - 0
src/main/java/com/persagy/bdtp/adm/entity/AdmJobSpace.java

@@ -34,6 +34,9 @@ public class AdmJobSpace extends BaseAdmDataEntity {
     )
     private ArrayNode outline;
 
+    @TableField(
+            exist = false
+    )
     private String strOutline;
 
     @Override

+ 3 - 0
src/main/java/com/persagy/bdtp/adm/entity/AdmObject.java

@@ -47,6 +47,9 @@ public class AdmObject extends BaseDeliveryEntity {
 	)
 	private ObjectNode infos;
 
+	@TableField(
+			exist = false
+	)
 	private String strInfos;
 
 	public JsonNode getInfo(String infoCode){

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

@@ -41,8 +41,14 @@ public class AdmPipe extends BaseDeliveryEntity {
     )
     private ObjectNode infos;
 
+    @TableField(
+            exist = false
+    )
     private String strRoute;
 
+    @TableField(
+            exist = false
+    )
     private String strInfos;
 
     @Override

+ 3 - 0
src/main/java/com/persagy/bdtp/adm/entity/AdmProblemArch.java

@@ -33,6 +33,9 @@ public class AdmProblemArch extends BaseAdmDataEntity {
 
     private Integer problemState;
 
+    @TableField(
+            exist = false
+    )
     private String strGeom;
 
     @Override

+ 5 - 2
src/main/java/com/persagy/bdtp/adm/entity/AdmQrCode.java

@@ -25,10 +25,13 @@ public class AdmQrCode extends BaseAdmDataEntity {
     )
     private ObjectNode location;
 
-    private String strLocation;
-
     private String remark;
 
+    @TableField(
+            exist = false
+    )
+    private String strLocation;
+
     @Override
     public void serializeJsonProp() {
         if(location != null) {

+ 4 - 3
src/main/java/com/persagy/bdtp/adm/service/impl/SyncAppImpl.java

@@ -451,9 +451,10 @@ public class SyncAppImpl implements ISyncApp {
 	}
 
 	private <T extends BaseAdmEntity> List<T> serializeJsonProp(List<T> list){
-		for(BaseAdmEntity entity : list) {
-			entity.serializeJsonProp();
-		}
+		//app端完善,不需要做tostr处理了
+//		for(BaseAdmEntity entity : list) {
+//			entity.serializeJsonProp();
+//		}
 		return list;
 	}
 

+ 12 - 6
src/main/resources/bootstrap.yml

@@ -1,5 +1,8 @@
 server:
   port: 8876
+  compression:
+    enabled: true
+    mime-types: application/json
 spring:
   application:
     # 应用名称
@@ -29,12 +32,14 @@ spring:
 #    password: dev@2021
 #    virtualHost: /dev
 persagy:
-#  common:
-#    file:
-#      storage: 0
-#      url: http://192.168.25.129:9000/
-#      accessKey: admin
-#      secretKey: 12345678
+  common:
+    file:
+      storage: 0
+      url: http://192.168.100.102:31335/
+      accessKey: persagy
+      secretKey: persagy@2021
+    token:
+      enabled: false
   adm:
     oldPlatformUrl: http://39.102.40.239
   bdtp:
@@ -45,5 +50,6 @@ persagy:
       service: http://develop.persagy.com/dmp-dic
 #      service: http://82.157.159.41/dmp-dic
 mybatis-plus:
+  type-handlers-package: com.persagy.**.typehandler
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 36 - 20
src/test/java/com/persagy/bdtp/adm/test/AdmApplicationTests.java

@@ -5,10 +5,11 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.persagy.bdtp.adm.dao.*;
+import com.persagy.bdtp.adm.dao.AdmComponentMapper;
+import com.persagy.bdtp.adm.dao.AdmInfosConfigMapper;
+import com.persagy.bdtp.adm.dao.AdmPipeConfigMapper;
+import com.persagy.bdtp.adm.dao.AdmRelsConfigMapper;
 import com.persagy.bdtp.adm.entity.*;
-import com.persagy.bdtp.adm.service.ISyncModel;
 import com.persagy.bdtp.adm.service.ISyncOldAdm;
 import com.persagy.bdtp.adm.test.data.InfosCfgs;
 import com.persagy.bdtp.adm.test.data.PipeCfgs;
@@ -22,7 +23,10 @@ import org.springframework.core.io.ResourceLoader;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest
@@ -46,26 +50,11 @@ public class AdmApplicationTests {
 	}
 
 	@Autowired
-	private ISyncModel syncModel;
-
-	@Autowired
-	private AdmObjectMapper admObjectMapper;
-
-	@Test
-	public void testMq(){
-		AdmObject obj = admObjectMapper.selectOne(new QueryWrapper<AdmObject>().eq("id", "Eq000222001100a450f006274c85811a13ee0650bd94"));
-		obj.getInfos().put("comp_type", "FFFAAL-声光报警器");
-		D2mMessage msg = new D2mMessage();
-		msg.setAddItems(Arrays.asList(obj));
-		syncModel.sendMessageToModel(msg);
-	}
-
-	@Autowired
 	private AdmInfosConfigMapper infosConfigMapper;
 	@Test
 	//@Transactional
 	public void testInfosCfg(){
-		String type = "ac";
+		String type = "se";
 
 		List<AdmComponent> compList = componentMapper.selectList(null);
 		HashMap<String, List<AdmComponent>> compMap = new HashMap<>();
@@ -84,6 +73,8 @@ public class AdmApplicationTests {
 		for(AdmInfosConfig item : list) {
 			item.setFlag(type);
 
+			setServeAreaToInfo(item.getInfos());
+
 			List<AdmComponent> comps = compMap.get(item.getClassCode());
 			if(comps != null)
 				setCompsToInfo(item.getInfos(), null, comps);
@@ -190,6 +181,20 @@ public class AdmApplicationTests {
 		info.put("options", ops);
 	}
 
+	private void setServeAreaToInfo(List infos){
+		Map info = new HashMap();
+		info.put("group", "静态信息");
+		info.put("code", "serve_area");
+		info.put("label", "服务区域");
+		info.put("dataType", "string");
+		info.put("inputType", "edit:serve_area");
+
+		infos.add(info);
+	}
+
+	/**
+	 * 为自定义新增设备类设置uuid
+	 */
 	@Autowired
 	ObjectMapper objectMapper;
 	@Autowired
@@ -206,6 +211,9 @@ public class AdmApplicationTests {
 		}
 	}
 
+	/**
+	 * 为关系配置表增加direction字段
+	 */
 	@Test
 	public void setRelCfgDirection(){
 		try {
@@ -238,4 +246,12 @@ public class AdmApplicationTests {
 		}
 	}
 
+	@Test
+	public void testMyBatis(){
+		AdmComponent comp = componentMapper.selectList(null).get(0);
+		comp.setCompCode(null);
+		comp.setClassCode(null);
+		componentMapper.updateById(comp);
+	}
+
 }

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

@@ -100,8 +100,8 @@ public class InfosCfgs {
             else {
                 String[] arr1 = left.split("\\s", 1);
                 info.unit = arr1[0];
-                if(StrUtil.isNotBlank(info.unit) && info.unit.indexOf('%') >= 0)
-                    info.unit = info.unit.replace("%", "");
+//                if(StrUtil.isNotBlank(info.unit) && info.unit.indexOf('%') >= 0)
+//                    info.unit = info.unit.replace("%", "");
                 if(arr1.length > 1)
                     optionsStr = arr1[1];
             }