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();
|
}
|
}
|