zhangk
2024-06-24 3b181fc943998371a8d77b2efbd84a24d8ea9d5b
新增北斗平台数据接入接口,分页查询接口
1 files modified
7 files added
235 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/constant/RainfallConstant.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/StBdDataController.java 50 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StBdData.java 69 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStBdDataService.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StBdDataServiceImpl.java 67 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/StBdDataVO.java 24 ●●●●● patch | view | raw | blame | history
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" ;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/StBdDataController.java
New file
@@ -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));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StBdData.java
New file
@@ -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;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.java
New file
@@ -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> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StBdDataMapper.xml
New file
@@ -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>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStBdDataService.java
New file
@@ -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);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StBdDataServiceImpl.java
New file
@@ -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();
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/StBdDataVO.java
New file
@@ -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;
    }
}