zhangk
2024-06-24 3b181fc943998371a8d77b2efbd84a24d8ea9d5b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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();
    }
}