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.databind.ObjectMapper;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springblade.core.log.exception.ServiceException;
|
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;
|
}
|
|
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();
|
}
|
}
|