From 3b181fc943998371a8d77b2efbd84a24d8ea9d5b Mon Sep 17 00:00:00 2001
From: zhangk <zhangk@gisuni.com>
Date: Mon, 24 Jun 2024 15:11:13 +0800
Subject: [PATCH] 新增北斗平台数据接入接口,分页查询接口

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/constant/RainfallConstant.java        |    4 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.xml             |    5 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/StBdDataController.java    |   50 ++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/StBdDataVO.java                    |   24 ++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStBdDataService.java         |    9 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StBdData.java                  |   69 +++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.java            |    7 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StBdDataServiceImpl.java |   67 ++++++++++++++++
 8 files changed, 235 insertions(+), 0 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/constant/RainfallConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/constant/RainfallConstant.java
index 8599b95..aea3f5f 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/constant/RainfallConstant.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/constant/RainfallConstant.java
@@ -18,4 +18,8 @@
 
 	public static final List<String> RAIN_FALL_RANGES = Arrays.asList("(250,+)", "(100,250]", "(50,100]", "(25,50]"
 			, "(10,25]", "(5,10]", "(0.1,5]", "[0,0.1]");
+
+	public static final String CONTAINS_CHINESE = "1" ;
+
+	public static final String NOT_CONTAINS_CHINESE = "9" ;
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/StBdDataController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/StBdDataController.java
new file mode 100644
index 0000000..ee2d617
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/StBdDataController.java
@@ -0,0 +1,50 @@
+package cn.gistack.sm.sjztmd.controller;
+
+import cn.gistack.sm.sjztmd.entity.StBdData;
+import cn.gistack.sm.sjztmd.service.IStBdDataService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Api(tags = "北斗平台监测数据")
+@RestController
+@RequestMapping("/sjztmd/stBdData")
+@AllArgsConstructor
+public class StBdDataController extends BladeController {
+
+	private final IStBdDataService stBdDataService;
+
+	/**
+	 * 分页查询北斗平台监测数据
+	 * @param stBdData 北斗平台监测数据
+	 * @param query 查询条件
+	 * @return 北斗平台监测数据
+	 */
+	@ApiOperation(value="分页查询北斗平台监测数据", notes="分页查询北斗平台监测数据")
+	@GetMapping("/list")
+	public R<IPage<StBdData>> list(StBdData stBdData, Query query) throws Exception {
+		IPage<StBdData> pageList = stBdDataService.page(Condition.getPage(query), Condition.getQueryWrapper(stBdData));
+		return R.data(pageList);
+	}
+
+	/**
+	 * 批量插入北斗平台监测数据
+	 * @param stBdDataStr 北斗平台监测数据
+	 * @return 插入结果
+	 */
+	@PostMapping("/insert")
+	public R<Boolean> insert(String stBdDataStr){
+		return R.status(stBdDataService.insertData(stBdDataStr));
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StBdData.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StBdData.java
new file mode 100644
index 0000000..f9329b6
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StBdData.java
@@ -0,0 +1,69 @@
+package cn.gistack.sm.sjztmd.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("\"st_bd_data\"")
+@ApiModel(value = "北斗平台监测数据", description = "北斗平台监测数据")
+public class StBdData implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@ApiModelProperty(value = "id")
+	@TableId(value = "\"id\"",type = IdType.NONE)
+	private String id;
+
+	/**
+	 * 消息内容
+	 */
+	@TableField(value = "\"content\"")
+	@ApiModelProperty(value = "消息内容")
+	private String content;
+
+	/**
+	 * 发送卡号
+	 */
+	@TableField(value = "\"from_addr\"")
+	@ApiModelProperty(value = "发送卡号")
+	private String fromAddr;
+
+	/**
+	 * 接收卡号
+	 */
+	@TableField(value = "\"to_addr\"")
+	@ApiModelProperty(value = "接收卡号")
+	private String toAddr;
+
+	/**
+	 * 入库时间
+	 */
+	@ApiModelProperty(value = "入库时间")
+	@TableField("\"create_time\"")
+	private Date createTime;
+
+	/**
+	 * 通信时间
+	 */
+	@ApiModelProperty(value = "通信时间")
+	@TableField("\"tm\"")
+	private Date tm;
+
+	/**
+	 * 编码类型
+	 */
+	@ApiModelProperty(value = "编码类型: 1表示消息内容含有中文,9表示消息内容不包含中文")
+	@TableField("\"code_type\"")
+	private String codeType;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.java
new file mode 100644
index 0000000..6381bf5
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.java
@@ -0,0 +1,7 @@
+package cn.gistack.sm.sjztmd.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.gistack.sm.sjztmd.entity.StBdData;
+
+public interface StBdDataMapper extends BaseMapper<StBdData> {
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.xml
new file mode 100644
index 0000000..9372915
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.gistack.sm.sjztmd.mapper.StBdDataMapper">
+
+</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStBdDataService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStBdDataService.java
new file mode 100644
index 0000000..d9ee552
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStBdDataService.java
@@ -0,0 +1,9 @@
+package cn.gistack.sm.sjztmd.service;
+
+import cn.gistack.sm.sjztmd.entity.StBdData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface IStBdDataService extends IService<StBdData>{
+
+	Boolean insertData(String stBdDataStr);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StBdDataServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StBdDataServiceImpl.java
new file mode 100644
index 0000000..2ff724a
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StBdDataServiceImpl.java
@@ -0,0 +1,67 @@
+package cn.gistack.sm.sjztmd.service.impl;
+
+import cn.gistack.sm.sjztmd.constant.RainfallConstant;
+import cn.gistack.sm.sjztmd.entity.StBdData;
+import cn.gistack.sm.sjztmd.mapper.StBdDataMapper;
+import cn.gistack.sm.sjztmd.service.IStBdDataService;
+import cn.gistack.sm.sjztmd.vo.StBdDataVO;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springblade.core.log.exception.ServiceException;
+import org.springframework.stereotype.Service;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+@DS("zt")
+public class StBdDataServiceImpl extends ServiceImpl<StBdDataMapper, StBdData> implements IStBdDataService {
+
+	private static final ObjectMapper objectMapper = new ObjectMapper();
+
+	@Override
+	public Boolean insertData(String stBdDataStr) {
+		StBdDataVO stBdDataVO;
+		try {
+			stBdDataVO = objectMapper.readValue(stBdDataStr, StBdDataVO.class);
+		} catch (JsonProcessingException e) {
+			throw new ServiceException("转换北斗平台监测数据失败,详情:" + e.getMessage());
+		}
+		List<StBdDataVO.CommInfo> commInfos = stBdDataVO.getCommInfos();
+		if (null == commInfos || commInfos.isEmpty()) {
+			throw new ServiceException("获取北斗平台数据失败,无效的commInfos");
+		}
+		List<StBdData> stBdDataList = new ArrayList<>();
+		for (StBdDataVO.CommInfo commInfo : commInfos) {
+			StBdData stBdData = new StBdData();
+			stBdData.setId(UUID.randomUUID().toString().replaceAll("-", ""));
+			stBdData.setTm(commInfo.getTime());
+			stBdData.setCreateTime(new Date());
+			stBdData.setFromAddr(commInfo.getFromAddr());
+			stBdData.setToAddr(commInfo.getToAddr());
+			String content = commInfo.getContent();
+			stBdData.setContent(content);
+			boolean isContainsChinese = contentIsContainChinese(content);
+			stBdData.setCodeType(isContainsChinese? RainfallConstant.CONTAINS_CHINESE : RainfallConstant.NOT_CONTAINS_CHINESE);
+			stBdDataList.add(stBdData);
+		}
+		this.saveBatch(stBdDataList);
+		return true;
+	}
+
+	private boolean contentIsContainChinese(String content) {
+		if (content == null || content.isEmpty()) {
+			return false;
+		}
+		String chinesePattern = "[\u4e00-\u9fa5]";
+		Pattern pattern = Pattern.compile(chinesePattern);
+		Matcher matcher = pattern.matcher(content);
+		return matcher.find();
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/StBdDataVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/StBdDataVO.java
new file mode 100644
index 0000000..12126b8
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/StBdDataVO.java
@@ -0,0 +1,24 @@
+package cn.gistack.sm.sjztmd.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class StBdDataVO {
+
+	private List<CommInfo> commInfos;
+
+	@lombok.Data
+	public static class CommInfo {
+
+		private String toAddr;
+
+		private String content;
+
+		private Date time;
+
+		private String fromAddr;
+	}
+}

--
Gitblit v1.9.3