zhangk
2024-06-26 9b7264d1075097aced6111cc7b6c4813befc2da0
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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 cn.gistack.sm.sjztmd.vo.StBdVO;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springframework.stereotype.Service;
 
import java.text.SimpleDateFormat;
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;
 
@Slf4j
@Service
@DS("zt")
public class StBdDataServiceImpl extends ServiceImpl<StBdDataMapper, StBdData> implements IStBdDataService {
 
    private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
 
    @Override
    public Boolean insertData(StBdDataVO stBdDataVO) throws Exception {
        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(formatter.parse(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;
    }
 
    @Override
    public IPage<StBdData> selectAlarmRecordPage(Query query, StBdVO stBdVO) {
        LambdaQueryWrapper<StBdData> queryWrapper = Wrappers.<StBdData>query().lambda()
            .eq(StrUtil.isNotEmpty(stBdVO.getCodeType()), StBdData::getCodeType, stBdVO.getCodeType())
            .eq(StrUtil.isNotEmpty(stBdVO.getFromAddr()), StBdData::getFromAddr, stBdVO.getFromAddr())
            .eq(StrUtil.isNotEmpty(stBdVO.getToAddr()), StBdData::getToAddr, stBdVO.getToAddr())
            .ge(stBdVO.getStartTime() != null, StBdData::getTm, stBdVO.getStartTime())
            .le(stBdVO.getEndTime() != null, StBdData::getTm, stBdVO.getEndTime());
        return page(Condition.getPage(query), queryWrapper);
    }
 
    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();
    }
}